我想對這些報頭在我的應用程序的清晰度:設置X-Content-Type的選項響應頭損壞了PNG文件
response.setHeader("Content-Security-Policy", "frame-ancestors 'self'");
response.setHeader("X-Content-Type-Options", "nosniff");
response.setHeader("X-XSS-Protection", "1; mode=block");
response.setHeader("Strict-Transport-Security", "max-age=7776000; cludeSubdomains");
String contextPath = ((HttpServletRequest) request).getContextPath();
response.setHeader("SET-COOKIE", "JSESSIONID=" +
((HttpServletRequest)request).getSession().getId() +
";Path="+contextPath+";Secure;HttpOnly");
response.setHeader("Cache-control", "no-cache, no-store,max-age=0, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setHeader("X-Frame-Options", "SAMEORIGIN");
截至目前,我知道:
- 內容安全策略是附加的安全層,有助於 檢測和減輕某些類型的攻擊,包括跨站點 腳本(XSS)和數據注入攻擊。
- X-的Content-Type-選項響應HTTP標頭是由服務器使用以指示標記,在內容類型報頭通告的MIME types不應改變和被遵循。
- X-XSS-protection是XSS過濾器。
- 嚴格,交通運輸,安全性是由Web應用程序通過使用一種特殊的響應頭的指定一個選擇的增強安全性。一旦支持的瀏覽器收到這個頭文件,瀏覽器將阻止任何通信通過HTTP發送到指定的域,而是通過HTTPS發送所有通信。
- 緩存控制通用頭字段用於指定在兩個,請求和響應的緩存機制的指令。
- Pragma旨在防止客戶端緩存響應。然而,有高速緩存控制和附註頭響應標頭之間的差,因爲它們都沒有除了附註同樣的工作是HTTP/1.0實施和緩存控制是HTTP/1.1實施相同的概念的..
- X框-選項用於指示是否允許瀏覽器呈現
frame
,iframe
或object
中的頁面。
現在我在CrossSiteScriptingFilter中有這個代碼,它映射在web.xml
中,它進行XSS過濾。但因此它會更改.png
文件編碼並刪除?
字符,這些字符會破壞PNG文件編碼並因此給出錯誤的PNG數據。
請檢查截圖,它沒有?
個字符,並被空字符串替換,因此它不允許.png
文件進行呈現。
我分析了代碼,發現刪除響應頭X-Content-Type-Options
正在做這件工作(.png
文件渲染正常)。
我仍不確定爲什麼會出現此問題,並且爲什麼X-Content-Type-Options
正在將?
字符替換爲""
字符串,該字符串正在產生問題。有人可以解釋。
感謝提前:)
+1回答,web.xml中是否有任何選項排除XSS腳本的已知路徑。現在我有一個修復程序,在繼續處理響應頭之前,我正在檢查過濾器中的路徑。如果還有其他解決辦法,我可以想到,除此之外,我很樂意知道這一點。 – ashishraaj
我不確定有沒有變得複雜。這個問題似乎相關,他們得出了類似的結論:https://stackoverflow.com/questions/8658949/in-a-web-xml-url-pattern-matcher-is-there-a-way-to-exclude-但接受的答案只能用於代碼。 – Danikov