【问题标题】:Weird URL bypassing routing, parenthesis capital letter parenthesis anything two closing parentheses奇怪的 URL 绕过路由,括号大写字母括号任意两个右括号
【发布时间】:2017-06-29 04:34:53
【问题描述】:

我今天在工作网站上偶然发现了一些奇怪的行为。我们的 SEO 顾问希望从 Google 的索引中删除一些看起来很奇怪的链接,这是一项看似简单的任务。但事实证明这是非常困难的。

该网站是一个 .net MVC 5.2.3 应用程序。我们查看了路由、我们自己的库等。没什么奇怪的。一段时间后,我们放弃并尝试通过在 web.config 中设置规则将请求简单地重定向到这些 url。原来这些 URL:s 是无与伦比的!不知何故,在适当的条件下,URL 的关键部分似乎避免了匹配规则以及稍后在 MVC 应用程序中的路由。

我们将神秘的 URL:s 缩小为 (T(anything)) 的格式,其中 T 可以是任何大写字母,任何东西都可以是呃,任何东西。它被放置在 URL 的开头,就好像它是一个目录一样。在正则表达式中:\([A-Z]\([a-zA-Z0-9]*\)\)

我已经测试并发现了相同的行为:

stackoverflow.com 中的一些示例:

它似乎不会影响整个网络,所以它不应该是浏览器或 HTTP 问题。一些例子:

谁能解释发生了什么?

我能做些什么来禁止这些 URL:s 绕过路由?

【问题讨论】:

    标签: asp.net web-config uri


    【解决方案1】:

    显然,这是 ASP.NET 中称为“无 cookie 会话”的功能。请参阅 MSDN 文档中的“无 Cookie 会话 ID”部分 here

    基本思想是,不再将会话 ID(如果启用会话状态)存储在 cookie 中,而是嵌入在 URL 中。

    我们(堆栈溢出)完全禁用会话状态(通过将 sessionState 模式设置为 off)。据我所知,最终结果是,只要使用与会话 id 格式匹配的 URL 之一,该信息就会被简单地丢弃。

    在 Google 中指向我们的链接也没有包含它,这让我认为您的网站可能被配置为在 URL 中实际生成会话 ID?如果不禁用该功能,您可能在这里无能为力。不过,请参阅我上面链接的 MSDN 页面上的“重新生成过期会话标识符”,了解如何至少防止意外会话共享(如果尚未完成)。

    【讨论】:

      猜你喜欢
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 2021-09-15
      • 2016-12-29
      相关资源
      最近更新 更多