And*_*ock 5 security iis asp.net-mvc-2
我们收到来自少数用户的报告,他们最终在我们的网络应用程序中的非常奇怪的路径上,形式如下:
https://www.example.com/(F(1xe9eXIxPzMALrZu6xd_6LBxDDlJI3lH2lkSvREZZKCfPBH20SF5EcNql6uXvyBVLgiNZshp9vXxaEzuLa5zm8c4ruux6gqu3B90eXGNmKDypu-wKR4OW_GwQctfjCdoxFYcDlLwglfE6rICL3JGkxtq4jgxggiQgJopKZGzLJ_PF2lHY7NqXya8eDshkP9o8QFDad47U54TMsxEwKCki2xPV9d9VxxjmDhNg7aQb38X_OTxHtf9I7AxiccanJf4m0bo0ceEJ70Mv20XYaMSlA2))/some/path
Run Code Online (Sandbox Code Playgroud)
(注意:我已经更改了随机字符以防万一它出现某种安全漏洞,所以不要费心去解码它 - 虽然如果这样做可能会有所帮助,请告诉我我在找什么,所以我可以在真实的URL上做).
这会在IIS中导致400,但IIS不会记录它,所以我不知道引用者等.
从用户描述的内容来看,它是在这一步骤中引起的:
return Redirect("/some/path");
Run Code Online (Sandbox Code Playgroud)
(在ASP.NET MVC 2 Controller Action中).
该站点在SSL下的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]
Run Code Online (Sandbox Code Playgroud)
从iPad或Surface平板电脑浏览我们的网站时,我们遇到了完全相同的问题.表单身份验证将以某种方式切换到"UseUri"模式.
根据http://msdn.microsoft.com/en-us/library/1d3t3c61(v=vs.90).aspx,在表单身份验证中存储Auth票证的默认模式是"UseDeviceProfile",它显然检查设备是否支持饼干与否.
然后它会说"对于支持cookie的设备,不会尝试进行探测以确定是否启用了cookie支持." 也许有人可以帮我理解这句话:)
无论如何,我们通过强制表单身份验证在web.config文件中使用cookie来解决问题:
<authentication mode="Forms">
<forms cookieless="UseCookies" loginUrl="~/Login" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
看一下了解 ASP.NET 无 Cookie 功能的工作原理:
在V2.0中,匿名身份验证和表单身份验证也使用了此功能。URL 现在可能如下所示:http://MySite.com/MyWebApplication/( A(XXXX)S(XXXX)F(XXXX))/home.aspx
再往下:
F(XXXX):这是表单身份验证票证。
可能您的一些客户会阻止 cookie。
编辑: 也就是说,您发布的网址似乎太长了。也许 MVC 内部或 URL 重写由于某种原因与它交互得很糟糕。
使用 POST 的问题MVC2 Cookieless Session Issue可能有些相关。
EDIT2: 该线程似乎也与您的问题有关:http://forums.asp.net/t/1612673.aspx。作者提到
一些用户报告 http 400 错误
因为显然
一些用户获得的表单身份验证令牌比正常情况长,因为这些令牌是在 URL 中传递的,因此它们使 URL 长度比 IIS 可接受的长度长
可能是一个遥远的机会,但值得一试。
| 归档时间: |
|
| 查看次数: |
1627 次 |
| 最近记录: |