HTTP 安全Response Header,可以通過 Server 端(apache、nginx)的設定。告知瀏覽器安全方面的一些設定。用來增加網站的安全性。
先看一個Apache 的例子,以下內容 可以寫在 .htaccess 文檔中:
<IfModule mod_headers.c>
# 通知瀏覽器應該只通過 HTTPS 訪問該站點,瀏覽器應該記住的記住1年
Header always set Strict-Transport-Security "max-age=31536000"
# 表示該頁面可以在相同域名頁面的 frame 中展示
Header set X-Frame-Options: "sameorigin"
# 阻止 請求類型是 style,且 MIME 類型不是 "text/css"。
# 阻止 請求類型是 script,且 MIME 類型不是 JavaScript MIME 類型
Header set X-Content-Type-Options: "nosniff"
# 阻止 JavaScript 通過 Document.cookie 屬性訪問 cookie
# 一個帶有安全屬性的 cookie 只有在請求使用 https: 的時候才會被發送到服務器。
Header always edit Set-Cookie (.*) "$1;HttpOnly;Secure"
# 啟用 XSS 過濾。如果檢測到攻擊,瀏覽器將不會清除頁面,而是阻止頁面加載。
Header set X-XSS-Protection "1; mode=block"
</IfModule>
Strict-Transport-Security。 (通常簡稱為 HSTS)響應標頭用來通知瀏覽器應該只通過 HTTPS 訪問該站點,並且以後使用 HTTP 訪問該站點的所有嘗試都應自動重定向到 HTTPS。
# 通知瀏覽器應該只通過 HTTPS 訪問該站點,瀏覽器應該記住的記住1年,規則也適用於該網站的所有子域名, 預加載
Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"
Strict-Transport-Security VS 301重定向。 可以接受訪問 http ,譬如 curl -X POST -d 'name=xx' http://www.python.com.tw/xxx/xx
不会被强制跳转而丢掉数据。
Permissions-Policy 啟用或禁止瀏覽器特性的機制。 譬如控制是否允許當前文檔使用 Geolocation 接口。
Header set Permissions-Policy: "geolocation=*"
Content-Security-Policy。允許站點管理者控制用戶代理能夠為指定的頁面加載哪些資源。這將幫助防止跨站腳本攻擊(Cross-Site Script)
Referrer-Policy。 Referer
請求頭包含了當前請求頁面的來源頁面的地址。 Referrer-Policy 是針對 Referer
的策略
# 對應 同源的請求,發送來源、路徑以及查詢字符串。strict-origin-when-cross-origin(默認值)
Header set Referrer-Policy "strict-origin-when-cross-origin"
詳情請參考 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security