【问题标题】:A potentially dangerous Request.Path一个潜在危险的 Request.Path
【发布时间】:2012-02-11 12:03:15
【问题描述】:

最近遇到很多这样的错误。我做了一些研究,发现这是因为在输入文本中检测到 html。这是否意味着有人试图入侵我的网站?

我可以通过关闭页面验证来阻止这种情况发生,但这似乎不是一个好的解决方案。

以下是其中一个错误的一些信息:

HTTP_CONNECTION:keep-alive HTTP_ACCEPT:*/* HTTP_ACCEPT_ENCODING:gzip, deflate HTTP_ACCEPT_LANGUAGE:en-us HTTP_HOST:www.easymuaythai.com HTTP_REFERER:http://www.google.com/search?q=symbolic+tattoos&hl=en&client=safari&tbo=d&source=lnms&tbm=isch&ei=u5c1T8L-JfLYiAKRs5ixCg&sa=X&oi=mode_link&ct=mode&cd=2&ved=0CAkQ_AUoAQ&biw=1024&bih=622 HTTP_USER_AGENT:Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3 

不知道这是否重要,但我的 IIS 中有一条规则可以防止图像盗链。

谢谢。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    几天前,在处理 ASP.NET 4.0 Web 项目时,我遇到了一个问题。问题是,当用户将未编码的 HTML 内容输入到评论文本框中时,他/她会收到类似以下错误消息: “从客户端检测到有潜在危险的 Request.Form 值”。

    这是因为 .NET 在输入的文本中检测到一些看起来像 HTML 语句的内容。然后我得到了一个链接请求验证,这是一个用于保护您的应用程序跨站点脚本攻击的功能,并相应地进行了跟进。

    为了禁用请求验证,我在该 .aspx 文件中的现有“页面”指令中添加了以下内容。

    ValidateRequest="false"
    

    但我还是遇到了同样的错误。

    后来我发现,对于 .NET 4,我们需要将 requestValidationMode="2.0" 添加到 web.config 文件的 httpRuntime 配置部分,如下所示:

    <httpRuntime requestValidationMode="2.0"/>
    

    但是如果 web.config 文件中没有 httpRuntime 部分,那么它会进入 &lt;system.web&gt; 部分。

    如果有人想关闭全局用户的请求验证,请在部分内的 web.config 文件中添加以下行:

    <pages validateRequest="false" />
    

    (source)

    【讨论】:

    • 一个很好的链接,因为你是所有者?单独的链接是considered a poor answer,因为它本身没有意义,并且不能保证目标资源将来仍然存在。请尝试至少包含您要链接的信息的摘要。
    【解决方案2】:

    首先,您在此处提供的字符串看起来像是在 google 图像 上搜索两个单词(符号纹身)并最终到达您的网站。也许它是错误的,但这些话与您的网站有关。

    99.9% 这个调用不是攻击

    现在,默认情况下,asp.net 会处理可能用于脚本注入或在页面上呈现任何内容的每个输入。但是在您熟悉此功能并且知道必须做什么之后,您可以禁用它。

    做什么:您可以阅读任何内容,但使用 HtmlEncode 或 UrlEncode(如果将它们放在 URL 上)或属性编码(如果将此输入放在属性上)将它们写在页面上。如果您在 SQL 上导入它们,那么还要注意使用参数进行 sql 查询。

    热链接

    图片盗链只是检查引用是否来自您的站点,我认为这与此错误无关。然而,因为这是一个图像搜索,也许是点击这张谷歌图片,谷歌创建了一个脚本来显示上面的这张图片,这有些方法会引发错误......嗯,也许必须这样做......

    更新

    我找到了the link that you give is here 这是您的用户从上述参考资料中看到的内容。从谷歌浏览器不会出错。

    此链接可在上述参考链接中找到。

    http://www.google.com/search?q=symbolic+tattoos&hl=en&client=safari&tbo=d&source=lnms&tbm=isch&ei=u5c1T8L-JfLYiAKRs5ixCg&sa=X&oi=mode_link&ct=mode&cd=2&ved=0CAkQ_AUoAQ&biw=1024&bih=622 HTTP_USER_AGENT:Mozilla/5.0(iPad;CPU OS 5_0_1,如 Mac OS X)AppleWebKit/534.46(KHTML,如 Gecko)版本/5.1 Mobile/9A405 Safari/7534.48.3

    【讨论】:

    • 我想我明白你的意思了。我在 Firefox 和 IE 上尝试了该链接,也没有为我生成错误。所以你建议我禁用请求验证?这安全吗?
    • @TheGateKeeper 如果输入未在页面上呈现,或者当您使用 htmlEncode 呈现时,我建议禁用。
    • 不,没有输入,但必须有比完全禁用网站更好的解决方案。看起来很不安全。
    • @TheGateKeeper 如果我们的想法相同,我已经禁用它。关注什么是不安全的,它们可能对您的网站造成什么危害?你得到数据了吗?您是否使用 url 显示数据?你保存数据了吗?什么是抛出这个错误? MS 只是将其视为潜在问题,而不是让任何事情继续作为预防措施。但如果你不使用这些,问题出在哪里?
    • 我网站的某些部分使用查询字符串,例如搜索等等。如果我禁用它,它可以用来伤害那里。是否可以仅针对来自 google.images 的请求禁用它?
    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多