gpt4 book ai didi

asp.net - 从客户端检测到潜在危险的 Request.Form 值

转载 作者:行者123 更新时间:2023-12-03 03:51:22 25 4
gpt4 key购买 nike

每次用户发布包含 < 的内容时或>在我的网络应用程序的页面中,我抛出了这个异常。

我不想讨论因为有人在文本框中输入了字符而引发异常或使整个 Web 应用程序崩溃的智能性,但我正在寻找一种优雅的方法来处理此问题。

捕获异常并显示

An error has occurred please go back and re-type your entire form again, but this time please do not use <

对我来说似乎不够专业。

禁用后验证 ( validateRequest="false" ) 肯定会避免此错误,但会使页面容易受到多种攻击。

理想情况下:当发生包含 HTML 限制字符的回发时,Form 集合中的发布值将自动进行 HTML 编码。所以.Text我的文本框的属性将是 something & lt; html & gt;

我可以通过处理程序执行此操作吗?

最佳答案

我认为您试图对所有发布的数据进行编码,从而从错误的角度攻击它。

请注意,“< ”也可能来自其他外部源,例如数据库字段、配置、文件、提要等。

此外,“<”本身并不危险。仅在特定上下文中才危险:编写尚未编码为 HTML 输出的字符串时(由于 XSS)。

在其他上下文中,不同的子字符串是危险的,例如,如果您将用户提供的 URL 写入链接,则子字符串“javascript:”可能是危险的。另一方面,在 SQL 查询中插入字符串时,单引号字符很危险,但如果它是从表单提交或从数据库字段读取的名称的一部分,则完全安全。

底线是:您无法过滤随机输入中的危险字符,因为任何字符在适当的情况下都可能是危险的。您应该在某些特定字符可能变得危险的位置进行编码,因为它们会进入具有特殊含义的不同子语言。将字符串写入 HTML 时,应使用 Server.HtmlEncode 对 HTML 中具有特殊含义的字符进行编码。如果将字符串传递给动态 SQL 语句,则应该对不同的字符进行编码(或者更好的是,让框架通过使用准备好的语句等为您完成此操作)。

您确定在将字符串传递到 HTML 的所有位置都进行了 HTML 编码,然后设置 ValidateRequest="false"<%@ Page ... %>您的 .aspx 中的指令文件。

在 .NET 4 中,您可能需要做更多的事情。有时还需要添加 <httpRuntime requestValidationMode="2.0" />到 web.config ( reference )。

关于asp.net - 从客户端检测到潜在危险的 Request.Form 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/81991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com