ASP.NET阻止Java Script注入式攻击
创始人
2024-04-19 13:40:27
0

ASP.NET MVC并不支持请求校验

对于一个ASP.NET MVC应用程序来说,上述情况显得更为类锐。因为在一个传统型ASP.NETWeb表单应用程序中(不像一个ASP.NET MVC应用程序),你可以依赖于一种称为请求校验的系统特征。请求校验会自动检测是否表单数据来自于一个包含危险的搜索文本的页面。如果你提交了这种包含危险数据的表单数据(例如包括了类括号<或>等字符),那么系统会自动抛出一个异常。

但是,请注意ASP.NET MVC框架目前还没有提供这种请求校验技术。所以,需要由你自己来完全承担这一责任来阻止对一个ASP.NET MVC应用程序的Java Script注入式攻击。

阻止Java Script注入式攻击

阻止Java Script注入攻击其实是很简单的。为此,无论你何时通过一个视图显示检索自某一个用户的文本,请确保一定调用了Html.Encode()。

例如,下面是Index视图的一部分,用于显示顾客的回馈信息:

  1. 顾客回馈信息

     
    •  
    • <%foreach(SurveysurveyinViewData.Model)  
    • {%> 
    •  
    • <%=survey.EntryDate.ToShortDateString()%> 
    • —  
    • <%=survey.Feedback%> 
    •  
    • <%}%> 
     

这段代码包含了一个foreach循环,它循环搜索Survey实体。每一个Survey实体的Feedback和EntryDate属性的值都会被显示出来。

为了阻止Java Script注入式攻击,你需要使用Html.Encode()辅助方法。下面展示了编写这种循环的正确方法:

  1. CustomerFeedback

     
    •  
    • <%foreach(SurveysurveyinViewData.Model)  
    • {%> 
    •  
    • <%=survey.EntryDate.ToShortDateString()%> 
    • —  
    • <%=Html.Encode(survey.Feedback)%> 
    •  
    • <%}%> 
     

应该对什么内容进行编码

注意,我并没有对前一节中的EntryDate属性进行编码。这里存在两个原因说明当在一个页面中显示这个EntryDate属性时我们不需要对这个属性进行编码。

首先,一个网站访问者没有输入这个EntryDate属性的值。该EntryDate属性的值是通过你的代码创建的。在这种情况下,一个黑客是不能输入恶意的代码。

假定一个网站访问者的确输入了该EntryDate属性的值。因为该EntryDate是作为一个DateTime类型存储于SQLServer数据库中的,所以,一个黑客也不能把恶意的代码加入到此EntryDate属性中。因此,当你显示它时你不需要担心对这个属性进行编码的问题。

一般来说,当一个用户通过表单上的文本框输入待提交的内容时才是你应该真正担心Java Script注入式攻击的时候。例如,这样情况下你应该担心用户名称的显示问题。如果你允许一个用户创建他们自己的用户名,那么,一个用户有可能会潜在地把一个恶意的Java Script字符串加入到他们的用户名(或添加一个指向一个色情图像的图像标签)。

此外,你还应该担心超级链接的问题。因为大多数博客应用程序都支持匿名用户把一个超级链接提交到他们的网站—当他们对一个博客提交相应的注释信息时。这种情况下,一个黑客就有可能把恶意的Java Script加入到该链接中。下面是一个简单的示例:

  1.  href="javascript:alert('Something Evil!')">Mr. Hacker 

当你点击这个链接时,即执行JavaScript代码。当然,在本文示例中不会发生任何恶意的事情。然而,你能够从页面上执行的确可以窃取表单数据或cookies的代码。以上是介绍ASP.NET阻止Java Script注入式攻击。

【编辑推荐】

  1. 浅谈ASP.NET MVC框架
  2. 介绍ASP.NET MVC中的MvcAjaxPanel
  3. ASP.NET MVC框架拯救UpdatePanel
  4. 用ASP.NET MVC源代码寻找解决方案
  5. ASP.NET MVC框架的ActionInvoker

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...