哪些安全防护功能了Html.Encode()得到我,当我处理用户输入,特别是脚本的问题?
Answer 1:
请参阅Server.HTMLEncode
:
所述的HTMLEncode方法适用HTML编码来指定的字符串。 这是你在Web应用程序中使用它之前,表单数据和其他客户端请求数据进行编码的快速方法是有用的。 编码数据可能不安全的字符转换为它们的HTML编码的等效。
如果要编码的字符串不是DBCS,的HTMLEncode字符转换,如下所示:
- 小于号字符(<)转化为
<
。- 的大于字符(>)被转换为
>
。- 与符号字符(&)被转换为
&
。- 双引号(“)被转换为
"
- 任何ASCII码字符代码为大于或等于为0x80被转换成
&#<number>
,其中是ASCII字符值。
这意味着,如果你要一些数据转储到请求流和数据是从用户输入的字段保存到数据库中它会阻止用户能够说,他们的名字是:
<script type="text/javascript">
function doSomethingEvil() { /* ... */ }
</script>
在这个例子中, Server.HTMLEncode
将编码<
, >
,和"
字符离开此:
<script type="text/javascript">
function doSomethingEvil() { /* ... */ }
</script>
其中,如果呈现在浏览器看起来就像这样:
<脚本类型= “文本/ JavaScript的”>功能doSomethingEvil(){/ * ... * /} </ SCRIPT>
而不是实际执行。
Answer 2:
它可以防止XSS(跨站点脚本)攻击,因为如果它可以防止用户输入变成了可用于执行这种类型的攻击的脚本
文章来源: HTML.Encode() - What/How does it prevent scripting security problems in ASP .NET?