如何避免ASP.Net(MVC)中的XSS漏洞?

如何避免ASP.Net(MVC)中的XSS漏洞?,asp.net,asp.net-mvc,xss,Asp.net,Asp.net Mvc,Xss,我最近注意到我的应用程序中有一个大漏洞,因为我做了如下操作: <input type="text" value="<%= value%>" /> 我知道我应该使用Html.Encode,但有没有办法对所有值都这样做,而不必显式地这样做?在ASP.Net 4.0或更高版本中,始终使用而不是。。。它为您进行HTML编码 完成这项工作后,对代码进行grep非常简单,因为有几种方法: 使用ASP.NET MVC2/.NET 4.0中的语法。(这只是Html.Encode

我最近注意到我的应用程序中有一个大漏洞,因为我做了如下操作:

<input type="text" value="<%= value%>" />


我知道我应该使用
Html.Encode
,但有没有办法对所有值都这样做,而不必显式地这样做?

在ASP.Net 4.0或更高版本中,始终使用而不是。。。它为您进行HTML编码

完成这项工作后,对代码进行grep非常简单,因为有几种方法:

  • 使用ASP.NET MVC2/.NET 4.0中的
    语法。(这只是
    Html.Encode()
    的语法糖)
  • 按照使用Anti-XSS库作为ASP.NET的“默认”编码引擎的详细说明进行操作

从斯科特·汉塞尔曼和菲尔·哈克那里观看。它们包括XSS、CSRF、JSON劫持,特别是ASP.NETMVC。

HTML编码语法

  • WebForms中的语法

  • 它在Razor中是自动的,即@model。某些东西会自动编码不 需要做任何事情来编码

  • MVC3 HTML助手方法自动返回编码字符串。e、 Label将返回编码的字符串

  • 有关跨站点脚本的详细信息


    潜在危险的HTML标记:

    虽然不是详尽的列表,但以下常用HTML标记可能允许恶意用户注入脚本代码:

    <applet>
    <body>
    <embed>
    <frame>
    <script>
    <frameset>
    <html>
    <iframe>
    <img>
    <style>
    <layer>
    <link>
    <ilayer>
    <meta>
    <object>
    
    
    
    
    
    攻击者还可以通过如下所示更改MIME类型,使用标记插入脚本

    <style TYPE="text/javascript">
      alert('hello');
    </style>
    
    
    警惕(“你好”);
    
    我们在三秒钟内回答了对方的问题。您好,纽曼。您可能希望使用白名单方法而不是黑名单方法。还可以考虑诸如<代码> OnCase< /COD>、<代码> OnBurr < /代码>和<代码> OnHuff等属性。
    <style TYPE="text/javascript">
      alert('hello');
    </style>