【发布时间】:2011-11-22 12:01:53
【问题描述】:
在我的一个 MVC3 Web 应用程序中,我最近注意到分析报告中有一些看起来很奇怪的 URL。
这些 Url 看起来像是在路由中注入了编码值,但似乎与路由匹配,就好像编码值不存在一样。
普通网址
/MyWebsite/Controller/Action
在日志中偶尔出现
/MyWebsite/(F(B5l-uGhiwA7p6lMmAdzwc27qHH8p5Kdmy5l3ixub7-meZ315Xm-uOtFl_w8RRdki4pf_yhRysEOVZ93xPV3yxDkn5XhXaY5PLara_kiqFb8BlHDZkzqv6wHgOgMTWgUF0))/Controller/Action
我已经在服务器和本地机器上对此进行了测试,无论是否存在插入的值,它都会解析到控制器。
它们似乎遵循某种模式,因此我使用其他变体进行了测试
/MyWebsite/(F(anything-here))/Controller/Action
很好解决,我也可以将F替换为任何其他字母
/MyWebsite/(A(anything-here))/Controller/Action
但是,用 1 个以上的字母或其他字符代替 F 并不能解决
/MyWebsite/(AB(anything-here))/Controller/Action = 404 错误
我认为这可能与无 Cookie 会话有关,但我发现的信息表明 MVC 不支持此功能。有谁知道这是什么,或者有什么需要担心的吗?
编辑:
关闭本地浏览器的 cookie,我在 IIS 管理器中将会话状态设置为“自动检测”,它在 URL 中为我提供了一个与上述模式非常相似的键。
当我尝试在没有 Cookie 的情况下实际登录时,它似乎不起作用,但也许这是另一个问题。
将 IIS 管理器设置为“使用 Cookie”并使用关闭了 Cookie 的浏览器进行访问(我在高级首选项中使用带有“从不接受 Cookie”选项的 Opera)似乎没有像以前那样创建 URL,但从相似之处,它至少必须解释为什么它与路线匹配。
由于 IIS 在我的服务器上设置为“使用 Cookie”,我不确定为什么会生成这些 URL,但至少我现在知道它们是什么。或许这是一次 Session 劫持的尝试……
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing