在某些情况下,当我的应用程序响应404 Not Found代码时,它也会返回带有会话标识符的Set-Cookie指令,但没有缓存控制或Pragma指令。这是否意味着会话标识符可以存储在浏览器缓存中,这是否会影响应用程序的安全性?我不确定是否所有使用Set-Cookie的响应都应该包含缓存指令。HTTP 404未找到响应与Set-Cookie指令包含缓存控制标头
2
A
回答
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的一个好结果。 (实际上,您也可以为未经验证的用户执行此操作,但我认为该风险非常低)。
相关问题
- 1. 缓存控制http头
- 2. Symfony响应缓存控制头重复
- 3. 缓存控制响应头不强制浏览器缓存
- 4. 如何发送缓存控制:HTTP响应头中的no-cache?
- 5. webapp2如何删除缓存控制:从响应头无缓存?
- 6. 缓存控制器响应
- 7. HTTP缓存:缓存控制
- 8. ASP.NET MVC:OutputCache和http头 - 缓存控制
- 9. JSON响应包含XML标头
- 10. 如何缓存控制效果请求头,在响应头
- 11. IE8(+ WIN7)不能下载包含无缓存HTTP标头中
- 12. Asp.Net中的HttpClient响应返回404(未找到:找不到控制器)
- 13. HttpURLConnection getInputStream()有时包含响应标头
- 14. HTTP缓存控制
- 15. 缓存控制头
- 16. nginx的浏览器缓存指令带来找不到404
- 17. Cloudfront缓存控制标头丢失
- 18. Angular指令 - 未找到控制器指令
- 19. HTTP错误404 - 未找到
- 20. jqGrid编辑响应404行未找到
- 21. 在WCF服务中设置HTTP缓存控制标头
- 22. HTTP中缓存控制标头的最大值
- 23. 响应头中的高速缓存控制
- 24. 设置ASP.NET缓存控制标头
- 25. 未找到MVC控制器操作(404)
- 26. JBPM控制台404-未找到错误
- 27. 删除Http标头响应
- 28. Retrofit + RxJava无法缓存响应,疑似响应标头
- 29. expire标题和缓存控制与mod标头
- 30. HTTP缓存头
谢谢您的回复。我问过这个问题,因为在这种情况下,Skipfish会返回问题_不正确的缓存指令(风险较高) - 隐式缓存的'Set-Cookie'response_。你认为这只是假阳性结果吗? – user187205
寻找互联网上的一些信息我资助[this](https://github.com/pintsized/ledge/issues/7)建议使用_Cache-Control:no-cache =“set-cookie”_。 – user187205
我会在一分钟内编辑答案,谢谢你指出这一点,有趣。 –