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

Ach*_*les 11 asp.net security

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

And*_*are 26

请看Server.HTMLEncode:

HTMLEncode方法将HTML编码应用于指定的字符串.在Web应用程序中使用表单数据和其他客户端请求数据之前,这非常有用.编码数据会将可能不安全的字符转换为HTML编码的等效字符.

如果要编码的字符串不是DBCS,则HTMLEncode按如下方式转换字符:

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

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

<script type="text/javascript">
    function doSomethingEvil() { /* ... */ }
</script>
Run Code Online (Sandbox Code Playgroud)

在这个例子中,Server.HTMLEncode将编码<,>以及"人物离开这个:

&lt;script type=&quot;text/javascript&quot;&gt;
    function doSomethingEvil() { /* ... */ }
&lt;/script&gt;
Run Code Online (Sandbox Code Playgroud)

如果在浏览器中呈现,它将如下所示:

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

而不是实际执行.


Bla*_*erX 5

它可以防止 XSS(跨站点脚本)攻击,因为如果它可以防止用户输入变成可用于执行此类攻击的脚本