代码之家  ›  专栏  ›  技术社区  ›  Achilles

HTML.Encode()-它如何防止ASP.NET中的脚本安全问题?

  •  10
  • Achilles  · 技术社区  · 15 年前

    当我处理用户输入,特别是脚本问题时,HTML.Encode()为我提供了什么安全保护?

    2 回复  |  直到 15 年前
        1
  •  29
  •   Andrew Hare    15 年前

    请看 Server.HTMLEncode :

    HTMLEncode方法应用HTML 编码为指定的字符串。这 作为一种快速的测试方法非常有用 对表单数据和其他客户端数据进行编码 在应用程序中使用数据之前,请先请求数据 与它们的HTML编码等效。

    如果要编码的字符串不是 DBCS,HTMLEncode转换字符

    • 小于字符(<)将转换为 &lt; .
    • 大于字符(>)将转换为 &gt; .
    • 符号和字符(&)转换为 &amp; .
    • 双引号字符(“)转换为 &quot; .
    • 代码大于或等于0x80的任何ASCII码字符 转换为 &#<number> 是ASCII字符值。

    这意味着,如果您要将某些数据转储到请求流,并且该数据是从用户输入的字段保存到数据库的,则会阻止用户说出他们的名字:

    <script type="text/javascript">
        function doSomethingEvil() { /* ... */ }
    </script>
    

    在这个例子中, Server.HTMLEncode 将对 < > " 离开此位置的字符:

    &lt;script type=&quot;text/javascript&quot;&gt;
        function doSomethingEvil() { /* ... */ }
    &lt;/script&gt;
    

    如果在浏览器中渲染,其外观如下所示:

    <script type=“text/javascript”> 函数doSomethingEvil(){/*…*/} </脚本>

        2
  •  4
  •   BlackTigerX Borut Tomazin    15 年前

    它可以防止XSS(跨站点脚本)攻击,因为如果 阻止