设置:
我正在Formsauthentication使用cookie来存储登录票的网站上工作.该站点还有一个HTTPHandler管理存储在数据库中的图像.处理程序将图像缓存为公共图像,并在20分钟后过期.我们注意到,由于图像与页面具有相同的生命周期,因此图像也包含Formsauthenticationcookie.配置是IIS 6,Win2k服务器,未启用内容过期.
问题:
我们正在经历的是人A登录并点击几页.然后Person B点击默认页面而不登录并获取Person A的cookie并且能够看到Person的所有A数据.我们通过启用IIS中的"内容过期"来重现此问题,但没有一致地重现,因此我们不确定内容过期是否帮助我们重现它.我们假设因为图像被缓存为公共图像并且它们还包含带有的cookie FormsAuthentication,所以人B可能无意中获得了人A的cookie.我们知道这不是对网站的攻击.
有没有人经历过类似这种行为?如果是这样,您能否就如何一致地重现此问题提供任何建议?
为什么 B 会得到 A 的 cookie?我假设您的意思是 B 的会话 cookie 与 A 的登录 ID 相关联。这就是问题的关键。
在我看来,A 的登录 ID 存储在可能交叉请求的位置(例如临时文件或数据库中),而不将其与会话 cookie 关联。(相关问题:正在缓存页面输出,但未正确关联或通过会话 cookie 检索。)存储或缓存会话信息时,必须将其与 cookie 关联。考虑属于浏览器而不是登录的会话数据。
我将安装 Firefox 扩展 LiveHTTP 并检查请求/响应标头。我敢打赌,您会看到 A 和 B 有不同的 cookie,但在服务器上它们都与相同的登录 ID 关联。