在我的一个MVC3网络应用程序中,我最近在分析报告中发现了一些看起来很奇怪的网址。
Urls看起来像是有一个注入路线的编码值,但似乎与路线匹配,好像编码值不存在一样。
普通网址
/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
但是,用F字母或其他字符代替F不能解决
/MyWebsite/(AB(anything-here))/Controller/Action
= 404错误
我认为这可能与Cookieless会话有关,但我发现的信息表明MVC不支持这种情况。有谁知道这是什么,或者是否有什么值得担心的?
修改
关闭本地浏览器的cookie,我在IIS管理器中将会话状态设置为“自动检测”,它在URL中给了我一个与上述模式非常相似的键。
当我尝试在没有Cookie的情况下实际登录时,它似乎不起作用,但也许这是另一个问题。
将IIS管理器设置为“使用Cookies”并使用关闭了cookie的浏览器进行访问(我在高级偏好设置中使用Opera选项'永不接受cookie')似乎没有像以前那样创建URL,但是判断为相似之处,至少必须解释为什么它与路线相匹配。
由于IIS在我的服务器上设置为“使用Cookie”,我不确定为什么会生成这些网址,但至少我现在知道它们是什么。也许这是对Session劫持的一次尝试......
答案 0 :(得分:2)
这确实看起来像存储在URL中的会话数据。它是ASP.NET的一个特性,也适用于MVC。在IIS管理器中查找您网站的“会话状态”图标,它的Cookie设置模式很可能设置为“自动检测”。如果不支持cookie,这可能会导致它回退到URI模式。