如何:通过将HTML编码应用于字符串来防止Web应用程序中的脚本漏洞

当用户可以将可执行代码(或脚本)添加到您的应用程序中时,会发生大多数脚本攻击。默认情况下,ASP.NET提供请求验证,如果表单发布包含任何HTML,则会引发错误。

您可以通过以下方式帮助防止脚本漏洞利用:

1,对表单变量,查询字符串变量和cookie值执行参数验证。此验证应包括两种类型的验证:验证变量可以转换为预期类型(例如,转换为整数,转换为日期时间等),以及验证预期范围或格式。例如,应使用Int32.TryParse方法检查旨在为整数的表单post变量,以验证变量是否为整数。此外,应检查结果整数以验证该值是否在预期的值范围内。

2,将值写回到响应时,将HTML编码应用于字符串输出。这有助于确保任何用户提供的字符串输入将在浏览器中呈现为静态文本,而不是可执行脚本代码或解释的HTML元素。

HTML编码使用HTML保留字符转换HTML元素,以便显示而不是执行它们。

将HTML编码应用于字符串

在显示字符串之前,请调用HtmlEncode方法。 HTML元素将转换为浏览器将显示的字符串表示形式,而不是解释为HTML。

以下示例说明了HTML编码。在第一种情况下,用户输入在显示之前被编码。在第二种情况下,来自数据库的数据在显示之前被编码。

注意:这个示例只有在通过添加@Page属性ValidateRequest="false"来禁用页面中的请求验证时才能工作。不建议在生产应用程序中禁用请求验证,因此请确保在查看此示例之后再次启用请求验证。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e _
    As System.EventArgs) Handles Button1.Click
        Label1.Text = Server.HtmlEncode(TextBox1.Text)
        Label2.Text = _
            Server.HtmlEncode(dsCustomers.Customers(0).CompanyName)
End Sub
原文地址:https://www.cnblogs.com/Tpf386/p/10144007.html