当我处理用户输入时,HTML.Encode()提供了什么安全保护,特别是脚本问题?
答案 0 :(得分:25)
HTMLEncode方法应用HTML 编码到指定的字符串。这个 是一种快速的方法 编码表单数据和其他客户端 在您使用之前请求数据 Web应用程序。编码数据 转换可能不安全的字符 他们的HTML编码等价物。
如果要编码的字符串不是 DBCS,HTMLEncode转换字符 如下:
- 小于字符(<)将转换为
<
。- 大于号字符(&gt;)将转换为
>
。- &符号(&amp;)转换为
&
。- 双引号字符(“)转换为
"
。- 任何代码大于或等于0x80的ASCII代码字符 转换为
&#<number>
,其中 是ASCII字符值。
这意味着如果您要将一些数据转储到请求流并且该数据已从用户输入的字段保存到数据库,则会阻止用户说出他们的名字:
<script type="text/javascript">
function doSomethingEvil() { /* ... */ }
</script>
在此示例中,Server.HTMLEncode
会对<
,>
和"
字符进行编码,而不会:
<script type="text/javascript">
function doSomethingEvil() { /* ... */ }
</script>
,如果在浏览器中呈现,将如下所示:
&lt; script type =“text / javascript”&gt; function doSomethingEvil(){/ * ... * /} &LT; /脚本&GT;
而不是实际执行。
答案 1 :(得分:3)
它会阻止XSS(跨站点脚本)攻击,因为如果阻止用户输入变成可用于执行此类攻击的脚本