【问题标题】:Request validation problem only for Googlebot仅针对 Googlebot 的请求验证问题
【发布时间】:2011-06-11 15:13:03
【问题描述】:

我的头发不多,但我正在拔掉剩下的一点。

我的 MVC3 应用程序通过 Action 提供图像,像这样

/Image/ShowImage/25-000252?t=a&o=1

a 是预定义的图像大小,o 是该项目的图像顺序

Image 是控制器,ShowImage 是返回 FilePathResult 的动作。除非 Googlebot 出现,否则所有这些都没有任何问题。然后突然请求验证开始了

A potentially dangerous Request.Path value was detected from the client (?).

如何和为什么都超出了我的理解能力。

ShowImage 动作有 ValidateInput(False),web.config 有 httpRuntime requestValidationMode="2.0" 但似乎没有任何帮助。

【问题讨论】:

  • @vnuk,失败的请求的请求路径是什么?你确定它和你发布的例子一样吗?我之所以问,是因为错误的明显原因是邪恶的 Googlebot 实际上确实请求了一条危险的路径。 :)
  • 是的,我确定。这仅适用于 Googlebot-Image/1.0,所有其他页面均由 Googlebot 抓取,没有任何问题
  • @vnuk 奇怪。听起来 Googlebot 正在逃避与号或其他东西,这会触发这种情况。我猜您在按需重现此错误时遇到了麻烦,否则您可以尝试使用allowed characters in the path
  • 我同意。我会将我的图片链接更改为 /Image/ShowImage/25-000252/?t=a&o=1 可能会改变 Googlebot 的行为。但除此之外,我非常绝望......
  • @vnuk 我仍然不相信不同客户端请求的相同路径有时会导致错误。 IIS 是否记录了这些信息的来源?除了用户代理之外,故障请求和工作请求之间没有什么不同吗?

标签: asp.net-mvc-3 googlebot


【解决方案1】:

打开应用程序跟踪或安装 elmah 或在日志中查找 iis 以查看返回 500 状态代码的路径。那么应该清楚什么需要改变。

【讨论】:

  • 没想过追踪,试试看。
  • elmah 不给你网址吗?如果你想解决这个问题(我强烈建议你保留这些内置保护),描述了一个解决方案来删除无效的路径字符:christophercrooker.com/… 请注意 - 这不仅仅是正常的请求验证。这正在更改路径中允许的字符。正常的请求验证还涉及对 ex 的检查。
  • /Image/ShowImage/25-000252?t=a&o=1 是 URL(我去掉了 http 部分),现在看来我的更改(添加 /)已经成功了。已经有 12 小时没有看到“危险的 Request.Path”了,希望它保持这种状态:)
  • @Vnuk 还是很奇怪。 :) 如果我是你,我会提交一个 Connect 错误。这散发着难以发现的臭味。
【解决方案2】:
猜你喜欢
  • 2011-07-08
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多