设置:
我在一个网站上工作,该网站使用 Formsauthentication
使用 cookie 来存储登录票证。该站点还有一个 HTTPHandler
,用于管理存储在数据库中的图像。处理程序缓存要公开的图像并在 20 分钟后过期。我们注意到,由于图像与页面具有相同的生命周期,因此图像还包含 Formsauthentication
cookie。配置为 IIS 6,Win2k 服务器,未启用内容过期。
问题:
我们遇到的是 A 登录并点击了几个页面。然后 B 访问了未登录的默认页面并获取了 A 的 cookie,并且能够看到 A 的所有数据。我们通过在 IIS 中打开内容过期重现了一次问题,但没有一致地重现,所以我们不确定内容过期是否帮助我们重现了它。我们假设,由于图像被缓存为公开的,并且它们还包含带有 FormsAuthentication
的 cookie,因此 B 可能无意中获取 A 的 cookie。我们知道这不是对网站的攻击。</p>
有没有人经历过类似的行为?如果是这样,您能否就如何始终如一地重现此问题提供任何建议?
最佳答案
我们假设 cookie 位于响应 header 中,并且正在将 A 的计算机上存在的相同 cookie 写出给 B。重要的是要注意,IE 7 中的 A 和 FireFox 中的 B 都出现了这个问题。此外,当 A 退出时,B 也退出了,因为 Formsauthentication 票证在服务器上不再有效。所以是的,他们确实有不同的 cookie,但在每个 cookie 中都有相同的表单验证票。然而,一个是在没有登录的情况下生成的。
我们也找到了这篇文章,但无法确认这是否是原因所在。 http://support.microsoft.com/default.aspx?scid=kb;EN-US;917072
我会看看 LiveHTTP 告诉我什么,然后再报告。谢谢。
关于c# - 图像缓存、HTTPHandler 和 FormsAuthentication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/263607/