什么是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 相关文章推荐
JavaScript延迟加载
Mar 09 Javascript
Javascript 判断 object 的特定类转载
Feb 01 Javascript
js利用Array.splice实现Array的insert/remove
Jan 13 Javascript
JQuery上传插件Uploadify使用详解及错误处理
Apr 27 Javascript
js页面跳转的常用方法整理
Oct 18 Javascript
JQuery页面的表格数据的增加与分页的实现
Dec 10 Javascript
jquery操作select元素和option的实例代码
Feb 03 Javascript
详解Vue.js搭建路由报错 router.map is not a function
Jun 27 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
Jun 24 jQuery
解决qrcode.js生成二维码时必须定义一个空div的问题
Jul 09 Javascript
vue动态设置页面title的方法实例
Aug 23 Javascript
quickjs 封装 JavaScript 沙箱详情
Nov 02 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网页显示各种语法错误
2013/09/23 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
用js来解决ajax读取页面乱码
2010/11/28 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
JavaScript实现基于Cookie的存储类实例
2015/04/10 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
js实现简单五子棋游戏
2020/05/28 Javascript
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
对Python强大的可变参数传递机制详解
2019/06/13 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
J2EE中常用的名词进行解释
2015/11/09 面试题
高中生操行评语大全
2014/04/25 职场文书
双拥工作宣传标语
2014/06/26 职场文书
农村文化建设标语
2014/10/07 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
同意报考证明
2015/06/17 职场文书
毕业酒会致辞
2015/07/29 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python
MySQL学习之基础命令实操总结
2022/03/19 MySQL
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL
Java界面编程实现界面跳转
2022/06/16 Java/Android