IIS7.5 ASP.NET MVC用户点击奇怪的URL:/(F(1xe9eXIxPz

时间:2011-06-03 15:57:43

标签: security asp.net-mvc-2 iis

我们收到来自少数用户的报告,他们最终会在我们的网络应用中出现非常奇怪的路径:

https://www.example.com/(F(1xe9eXIxPzMALrZu6xd_6LBxDDlJI3lH2lkSvREZZKCfPBH20SF5EcNql6uXvyBVLgiNZshp9vXxaEzuLa5zm8c4ruux6gqu3B90eXGNmKDypu-wKR4OW_GwQctfjCdoxFYcDlLwglfE6rICL3JGkxtq4jgxggiQgJopKZGzLJ_PF2lHY7NqXya8eDshkP9o8QFDad47U54TMsxEwKCki2xPV9d9VxxjmDhNg7aQb38X_OTxHtf9I7AxiccanJf4m0bo0ceEJ70Mv20XYaMSlA2))/some/path

(注意:我已经改变了随机字符,以防它出现某种安全漏洞,所以不要费心去解码它 - 虽然如果这样做可能会有所帮助,请告诉我我在寻找什么所以我可以在真实的URL上做到这一点。

这会导致IIS中有400,但IIS不会记录它,所以我不知道引用者等。

从用户描述的内容来看,它是在这一步骤中引起的:

return Redirect("/some/path");

(在ASP.NET MVC 2控制器操作中)。

在IIS 7.5下的IIS 7.5上运行的站点。

有什么想法吗?我从来没有见过这样的事情:s

更新

我还安装了ISAPI重写版,其中包含以下.htaccess

RewriteEngine on
AllowOverride All

# Ensure that all traffic on the live domain is enforced as HTTPS
RewriteCond %{HTTP:Host} (.*)
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (.*)
RewriteRule .? https://%1%2 [R,L]

2 个答案:

答案 0 :(得分:7)

从iPad或Surface平板电脑浏览我们的网站时,我们遇到了完全相同的问题。表单身份验证将以某种方式切换到“UseUri”模式。

根据http://msdn.microsoft.com/en-us/library/1d3t3c61(v=vs.90).aspx,在表单身份验证中存储Auth票证的默认模式是“UseDeviceProfile”,它显然检查设备是否支持cookie。

然后它说“对于支持cookie的设备,不会尝试进行探测以确定是否启用了cookie支持。”也许有人可以帮我理解这句话:)

无论如何,我们通过强制表单身份验证在web.config文件中使用cookie来解决问题:

<authentication mode="Forms">
  <forms cookieless="UseCookies" loginUrl="~/Login" timeout="2880" />
</authentication>

答案 1 :(得分:2)

看看Understand How the ASP.NET Cookieless Feature Works

  

在V2.0中,匿名身份验证和表单身份验证也使用此功能。该网址现在可能如下所示:http://MySite.com/MyWebApplication/(A(XXXX)S(XXXX)F(XXXX))/home.aspx

并进一步向下:

  

F(XXXX):这是表单身份验证票证。

可能有些客户阻止了Cookie。

修改 也就是说,您发布的网址似乎过长。也许无论出于何种原因,MVC内部或URL重写都会与它进行严重的交互。

问题MVC2 Cookieless Session Issue using POST可能有些相关。

<强> EDIT2: 此线程似乎也与您的问题有关:http://forums.asp.net/t/1612673.aspx。 作者提到

  

部分用户报告了http 400错误

因为显然

  

某些用户正在获取比正常情况更长的表单身份验证令牌,因为这些令牌在URL中传递,使得URL长度超过IIS将接受

可能是一个长镜头,但值得一试。