c# - 图像缓存、HTTPHandler 和 FormsAuthentication

标签 c# iis cookies

设置:

我在一个网站上工作,该网站使用 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/

相关文章:

c# - 为什么绑定(bind)设置在 .NET 4 和 .NET 3.5 中的行为不同

iis - Intelligencia.UrlRewriter 可以在 IIS7 中工作吗?

c# - 如何在 Web 应用程序上运行后台服务 - DotNetNuke

php - 将 IIS 重写转换为 Nginx 重写语法?

http - 服务器端删除cookies的正确方法

python Selenium 白页

c# - 如何从 C# 中的字符串生成非随机数?

c# - 我的算法在查找 0 和 1 数组中 1 的最大连通区域的大小时存在缺陷吗?

cookies - 检测用户是否是第一次访问者,如果是,则重定向到页面,如果不是,则重定向到另一个页面

c# - 仅在一个类中设置泛型类型