技术开发 频道

在ASP.NET MVC应用程序中防止JavaScript注入式攻击

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

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

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

  4、 阻止JavaScript注入式攻击

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

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

<h1>顾客回馈信息</h1>
<ul>
<% foreach (Survey survey in ViewData.Model)
   {
%>
  
<li>
    
<%= survey.EntryDate.ToShortDateString() %>
    
&mdash;
    
<%= survey.Feedback %>
  
</li>
<% } %>
</ul>

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

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

<h1>Customer Feedback</h1>
<ul>
<% foreach (Survey survey in ViewData.Model)
   {
%>
  
<li>
    
<%= survey.EntryDate.ToShortDateString() %>
    
&mdash;
    
<%= Html.Encode(survey.Feedback) %>
  
</li>
<% } %>
</ul>
0
相关文章