社会保险识 JavaScript 注入攻击

啊是 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 应用程序中形数据。

 

 

 原文链接:http://msdn.microsoft.com/zh-cn/dd320308.aspx

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注