2016-10-02 31 views
2

在某些情况下,当我的应用程序响应404 Not Found代码时,它也会返回带有会话标识符的Set-Cookie指令,但没有缓存控制或Pragma指令。这是否意味着会话标识符可以存储在浏览器缓存中,这是否会影响应用程序的安全性?我不确定是否所有使用Set-Cookie的响应都应该包含缓存指令。HTTP 404未找到响应与Set-Cookie指令包含缓存控制标头

回答

1

Cookie是否永久存储在浏览器中是否受Expires and Max-Age properties控制。 Cache-Control和Pragma标题只会影响页面内容。所以我认为即使没有明确的缓存头(*,但请参阅下面的编辑),您在404页上仍然很好。

会话Cookie应始终设置为没有明确的过期日期,在这种情况下,它们通常不会存储在磁盘上,并且在用户退出浏览器时将被删除。

(请注意,有你无法控制的情况下,当从内存中这样的数据仍然会保存在磁盘上,就像例如当用户决定冬眠,或者计算机运行的内存,并开始切换。)

编辑(见注释):

在这种设置cookies正常网页的情况下,你通常有插座,以避免像Cache-control: no-cache,no-store,must-revalidate敏感信息的缓存。我认为这固有地包括不缓存cookie响应,所以你不需要在普通页面上明确地设置它。

那么问题是,在404页面上设置了什么cookie?如果未经身份验证的用户下载404页面并获取会话cookie,则该cookie对于攻击者无用,因为应用程序不应受到会话固定(cookie值在登录时会改变)。如果它是经过身份验证的用户,为什么应用程序会在404页面上再次设置会话cookie ?如果它确实如此,你应该发送头文件来防止缓存,这是Skipfish的一个好结果。 (实际上,您也可以为未经验证的用户执行此操作,但我认为该风险非常低)。

+0

谢谢您的回复。我问过这个问题,因为在这种情况下,Skipfish会返回问题_不正确的缓存指令(风险较高) - 隐式缓存的'Set-Cookie'response_。你认为这只是假阳性结果吗? – user187205

+0

寻找互联网上的一些信息我资助[this](https://github.com/pintsized/ledge/issues/7)建议使用_Cache-Control:no-cache =“set-cookie”_。 – user187205

+0

我会在一分钟内编辑答案,谢谢你指出这一点,有趣。 –