当我处理用户输入时,HTML.Encode()提供了什么安全保护,特别是脚本问题?
And*_*are 26
HTMLEncode方法将HTML编码应用于指定的字符串.在Web应用程序中使用表单数据和其他客户端请求数据之前,这非常有用.编码数据会将可能不安全的字符转换为HTML编码的等效字符.
如果要编码的字符串不是DBCS,则HTMLEncode按如下方式转换字符:
- 小于号字符(<)被转换为
<.- 大于号字符(>)将转换为
>.- &符号(&)转换为
&.- 双引号字符(")转换为
".- 任何代码大于或等于0x80的ASCII代码字符都将转换为
&#<number>ASCII字符值.
这意味着,如果要将某些数据转储到请求流,并且该数据已从用户输入的字段保存到数据库,则会阻止用户说出他们的名字是:
<script type="text/javascript">
function doSomethingEvil() { /* ... */ }
</script>
Run Code Online (Sandbox Code Playgroud)
在这个例子中,Server.HTMLEncode将编码<,>以及"人物离开这个:
<script type="text/javascript">
function doSomethingEvil() { /* ... */ }
</script>
Run Code Online (Sandbox Code Playgroud)
如果在浏览器中呈现,它将如下所示:
<script type ="text/javascript"> function doSomethingEvil(){/*...*/} </ script>
而不是实际执行.