Web Security Response Header

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-PolicyReferer 請求頭包含了當前請求頁面的來源頁面的地址。 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