什么是JavaScript注入攻击?


Posted in Javascript onSeptember 14, 2016

Javascript可以作为黑客攻击网站的一种工具,其中注入js(javascript)恶意脚本就是其中一种手段之一,那么下面,大家来学习一下如何预防js的注入攻击呢?以下有一个不错的陈述,跟大家分享:

什么是 JavaScript 注入攻击?
每当接受用户输入的内容并重新显示这些内容时,网站就很容易遭受 JavaScript 注入攻击。让我们研究一个容易遭受 JavaScript 注入攻击的具体应用程序。假设已经创建了一个客户反馈网站。客户可以访问网站并输入对产品的反馈信息。当客户提交反馈时,反馈信息重新显示在反馈页面上。

客户反馈网站是一个简单的网站。不幸的是,此网站容易遭受 JavaScript 注入攻击。

假设正在将以下文本输入到客户反馈表单中:

<script>alert(“Boo!”)</script>

此文本表示显示警告消息框的 JavaScript 脚本。在某人将此脚本提交到客户反馈表单后,消息 Boo! 会在将来任何人访问客户反馈网站时显示的攻击。您可能还认为别人不会通过 JavaScript 注入攻击搞破坏。

现在,您对 JavaScript 注入攻击的第一反应也许是不理会。您可能认为 JavaScript 注入攻击不过是一种无伤大雅,不幸的是,黑客会通过在网站中注入 JavaScript 进行破坏活动。使用 JavaScript 注入攻击可以执行跨站脚本 (XSS) 攻击。在跨站脚本攻击中,可以窃取保密的用户信息并将信息发送到另一个网站。

例如,黑客可以使用 JavaScript 注入攻击窃取来自其他用户浏览器的 Cookies 值。如果将敏感信息(如密码、信用卡帐号或社会保险号码)保存在浏览器 Cookies 中,那么黑客可以使用 JavaScript 注入攻击窃取这些信息。或者,如果用户将敏感信息输入到页面的表单字段中,而页面受到 JavaScript 攻击的危害,那么黑客可以使用注入的 JavaScript 获取表单数据并将其发送到另一个网站。

请高度重视。认真对待 JavaScript 注入攻击并保护用户的保密信息。在接下来的两部分中,我们将讨论防止 ASP.NET MVC 应用程序受到 JavaScript 注入攻击的两种技术。 

方法 1:视图中的 HTML 编码 

阻止 JavaScript 注入攻击的一种简单方法是重新在视图中显示数据时,用 HTML 编码任何网站用户输入的数据

如:<%=Html.Encode(feedback.Message)%>

使用 HTML 编码一个字符串的含意是什么呢?使用 HTML 编码字符串时,危险字符如 < 和 > 被替换为 HTML 实体,如 < 和 >。所以,当使用 HTML 编码字符串 <script>alert(“Boo!”)</script>时,它将转换为 <script>alert(“Boo!”)</script>。浏览器在解析编码的字符串时不再执行 JavaScript 脚本。而是显示无害的页面

方法 2:写入数据库之前的 HTML 编码
除了在视图中显示数据时使用 HTML 编码数据,还可以在将数据提交到数据库之前使用 HTML 编码数据。第二种方法正是程序清单 4 中 controller 的情况。

如:

public ActionResult Create(string message)
{
// Add feedback
var newFeedback = new Feedback();
newFeedback.Message = Server.HtmlEncode(message);
newFeedback.EntryDate = DateTime.Now;
db.Feedbacks.InsertOnSubmit(newFeedback);
db.SubmitChanges(); 
 

// Redirect
return RedirectToAction(“Index”);
}

请注意,Message 的值在提交到数据库之前是在 Create() 操作中经过 HTML 编码的。当在视图中重新显示 Message 时,Message 被 HTML 编码,因而不会执行任何注入到 Message 中的 JavaScript。

总结

通常,人们喜欢使用本教程中讨论的第一种方法,而不喜欢使用第二种方法。第二种方法的问题在于在数据库中最终会保留 HTML 编码的数据。换言之,数据库中的数据会包含奇怪的字符。这有什么坏处呢?如果需要用除网页以外的形式显示数据库数据,则将遇到问题。例如,不能轻易在 Windows Forms 应用程序中显示数据。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js中对象的声明方式以及数组的一些用法示例
Dec 11 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
Jul 17 Javascript
使用JQuery库提供的扩展功能实现自定义方法
Sep 09 Javascript
jQuery在线选座位插件seat-charts特效代码分享
Aug 27 Javascript
Bootstrap每天必学之基础排版
Nov 20 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
Apr 19 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
Dec 20 Javascript
微信小程序之多文件下载的简单封装示例
Jan 29 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
Jun 07 Javascript
js变量值传到php过程详解 将php解析成数据
Jun 26 Javascript
小程序中this.setData的使用和注意事项
Aug 28 Javascript
vue路由守卫及路由守卫无限循环问题详析
Sep 05 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
Sep 14 #Javascript
再谈javascript注入 黑客必备!
Sep 14 #Javascript
AngularJS 表达式详解及实例代码
Sep 14 #Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
Sep 14 #Javascript
js注入 黑客之路必备!
Sep 14 #Javascript
AngularJS 模块化详解及实例代码
Sep 14 #Javascript
AngularJS 过滤与排序详解及实例代码
Sep 14 #Javascript
You might like
如何在PHP中使用Oracle数据库(1)
2006/10/09 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
PHP处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
js arguments.callee的应用代码
2009/05/07 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
Python实现的购物车功能示例
2018/02/11 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
python日志logging模块使用方法分析
2019/05/23 Python
Python中@property的理解和使用示例
2019/06/11 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
大学生毕业求职简历的自我评价
2013/10/24 职场文书
网络维护管理员的自我评价分享
2013/11/11 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
研究生导师推荐信
2014/09/06 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
十大最强奥特曼武器:怪兽战斗仪在榜,第五奥特之父只使用过一次
2022/03/18 日漫
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技