在某些情況下,當我的應用程序響應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
我會在一分鐘內編輯答案,謝謝你指出這一點,有趣。 –