0x00 背景
HTTP XSS-Protection響應標頭是Internet Explorer,Chrome和Safari的功能,當頁面檢測到反射的跨站點腳本(XSS)攻擊時,該頁面將阻止加載頁面。 儘管當站點實施強大的Content-Security-Policy禁止使用內JavaScript(“不安全內聯”)時。
在現代瀏覽器中這些保護在很大程度上是不必要的,但它們仍可以爲尚未使用舊版Web瀏覽器的用戶提供保護 支持CSP。
0x01 修復思路
配置XSS-Protection響應標頭值
X-XSS-Protection: 0 #禁用XSS過濾。
X-XSS-Protection: 1 #啓用XSS過濾(通常是瀏覽器中的默認設置)。 如果檢測到跨站點腳本攻擊,則瀏覽器將對頁面進行清理(刪除不安全的部分)。
X-XSS-Protection: 1; mode=block #模式=阻止
啓用XSS過濾。 如果檢測到攻擊,瀏覽器將不呈現頁面,而不會清除頁面。
X-XSS-Protection: 1; report=<reporting-uri>
1; report = <reporting-URI>(僅支持Chrome瀏覽器),啓用XSS過濾。 如果檢測到跨站點腳本攻擊,瀏覽器將清理該頁面並報告違規行爲。 這使用CSP report-uri指令的功能來發送報告。
0x02 代碼修復
推薦配置:X-XSS-Protection: 1; mode=block
Nginx
add_header "X-XSS-Protection" "1; mode=block";
Apache (.htaccess)
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
</IfModule>
PHP
header("X-XSS-Protection: 1; mode=block");