add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options: nosniff;
add_header Content-Security-Policy "default-src 'self' ";
add_header X-Xss-Protection 1;
X-Frame-Options
X-Frame-Options HTTP 響應頭是用來給瀏覽器指示允許一個頁面可否在 <frame>, <iframe> 或者 <object> 中展現的標記。網站可以使用此功能,來確保自己網站的內容沒有被嵌到別人的網站中去,也從而避免了點擊劫持 (clickjacking) 的攻擊。
X-Frame-Options 有三個值:
DENY
表示該頁面不允許在 frame 中展示,即便是在相同域名的頁面中嵌套也不允許。
SAMEORIGIN
表示該頁面可以在相同域名頁面的 frame 中展示。
ALLOW-FROM uri
表示該頁面可以在指定來源的 frame 中展示。
換一句話說,如果設置為 DENY,不光在別人的網站 frame 嵌入時會無法加載,在同域名頁面中同樣會無法加載。另一方面,如果設置為 SAMEORIGIN,那么頁面就可以在同域名頁面的 frame 中嵌套。
X-Content-Type-Options
用來指定瀏覽器對未指定或錯誤指定 Content-Type 資源真正類型的猜測行為,nosniff 表示不允許任何猜測,互聯網上的資源有各種類型,通常瀏覽器會根據響應頭的Content-Type字段來分辨它們的類型。例如:"text/html"代表html文檔,"image/png"是PNG圖片,"text/css"是CSS樣式文檔。然而,有些資源的Content-Type是錯的或者未定義。這時,某些瀏覽器會啟用MIME-sniffing來猜測該資源的類型,解析內容并執行。
Content-Security-Policy
主要是用來定義頁面可以加載哪些資源,減少 XSS 的發生。
具體介紹
https://imququ.com/post/content-security-policy-reference.html
X-Xss-Protection
顧名思義,這個響應頭是用來防范XSS的。最早我是在介紹IE8的文章里看到這個,現在主流瀏覽器都支持,并且默認都開啟了XSS保護,用這個header可以關閉它。它有幾種配置:
0:禁用XSS保護;
1:啟用XSS保護;
1; mode=block:啟用XSS保護,并在檢查到XSS攻擊時,停止渲染頁面(例如IE8中,檢查到攻擊時,整個頁面會被一個#替換);
瀏覽器提供的XSS保護機制并不完美,但是開啟后仍然可以提升攻擊難度,總之沒有特別的理由,不要關閉它。