地址:https://docs.microsoft.com/en-us/previous-versions/aspnet/a2a4yykt(v=vs.100)?redirectedfrom=MSDN
中文标题:如何:通过在字符串中应用HTML编码来保护Web应用程序中的脚本开发
英文标题:How to: Protect Against Script Exploits in a Web Application by Applying HTML Encoding to Strings
大多数脚本攻击发生在用户可以将可执行代码(或脚本)放入应用程序时。默认情况下,ASP.NET提供请求验证,如果表单帖子包含任何HTML,则会引发错误。
您可以通过以下方式帮助防止脚本攻击:
- 1,对表单变量,查询字符串变量和cookie值执行参数验证。 此验证应包括两种类型的验证:验证变量可以转换为预期类型(例如,转换为整数,转换为日期时间等),以及预期范围或格式的验证。 例如,应使用Int32.TryParse方法检查旨在为整数的表单发布变量,以验证该变量确实为整数。 此外,应检查结果整数以验证该值是否落在预期的值范围内。
- 2,将值写回响应时,将HTML编码应用于字符串输出。 这有助于确保在浏览器中将任何用户提供的字符串输入呈现为静态文本,而不是可执行脚本代码或解释的HTML元素。
HTML编码使用HTML保留字符转换HTML元素,以便显示而不是执行它们。
将HTML编码应用于字符串
在显示字符串之前,请调用HtmlEncode方法。 HTML元素被转换为字符串表示形式,浏览器将显示该字符串表示形式,而不是将其解释为HTML。
以下示例说明了HTML编码。 在第一种情况下,在显示用户输入之前对其进行编码。 在第二种情况下,来自数据库的数据在显示之前被编码。
注意:
仅当您通过添加@Pageattribute ValidateRequest =“ false”在页面中禁用请求验证时,此示例才有效。 不建议您在生产应用程序中禁用请求验证,因此请确保在查看此示例后再次启用请求验证。
private void Button1_Click(object sender, System.EventArgs e) { Label1.Text = Server.HtmlEncode(TextBox1.Text); Label2.Text = Server.HtmlEncode(dsCustomers1.Customers[0].CompanyName); }
============================================