在 WordPress 上配置 HTTP 安全標頭

已發表: 2022-02-23

大多數現代瀏覽器都支持各種 HTTP 安全標頭,以提高 WordPress 網站的安全性,更好地保護訪問者免受點擊劫持、跨站腳本和其他常見攻擊等瀏覽器攻擊,甚至改善網站訪問者的隱私在線的。

本文概述了這些 HTTP 安全標頭是什麼,解釋了它們的工作原理以及它們的範圍。 它還解釋瞭如何將這些 HTTP 安全標頭添加到您的網站以提高 WordPress 網站的安全性。

什麼是 HTTP 安全標頭?

HTTP 安全標頭是一系列 HTTP 標頭1 在 Web 客戶端(瀏覽器)和 Web 服務器之間交換,用於指定 Web 客戶端和服務器之間 HTTP 通信的安全相關設置。 在您的 WordPress 網站上啟用安全標頭可以提高您的網站抵禦常見攻擊的能力,包括跨站點腳本 (XSS) 和點擊劫持。

HTTP 安全標頭如何提高 WordPress 安全性

HTTP 安全標頭可以通過指示瀏覽器相應地啟用各種安全功能來幫助提高 WordPress 網站的安全性。 在許多情況下,實現正確的標頭是一件棘手的事情,甚至可能在舊瀏覽器中產生不同的結果(或完全無效),因此在應用任何更改之前在測試或暫存環境中嘗試任何更改是最佳實踐一個實時的 WordPress 網站。

最常用的 HTTP 安全標頭

哪些標題做什麼? 讓我們深入了解一些最重要和最常用的 HTTP 安全標頭。

嚴格的運輸安全

Strict-Transport-Security HTTP 標頭指示瀏覽器強制執行 HTTP 嚴格傳輸安全 (HSTS) 2 . HSTS 標頭指示訪問瀏覽器始終通過 HTTPS(而不是 HTTP)訪問站點,即使用戶(或試圖運行中間人攻擊的攻擊者)試圖通過 HTTP 訪問站點,瀏覽器將強制切換到 HTTPS,即使 HTTP 不可用 - 在這種情況下,您應該僅在啟用 HTTPS 並且完全正常工作且沒有混合內容問題的情況下啟用 HSTS 3 .

以下 HTTP 嚴格傳輸安全 (HSTS) HTTP 響應標頭啟用 HSTS 持續 1 年(31536000 秒)。


Strict-Transport-Security: max-age=31536000

內容安全策略

Content-Security-Policy HTTP 安全標頭是一個具有強大功能和可配置性的 HTTP 標頭。 它配置瀏覽器的內容安全策略 (CSP),這是現代瀏覽器中的一組安全功能,可提供額外的安全層,有助於檢測和緩解跨站點腳本 (XSS) 和數據注入攻擊等攻擊。

內容安全策略 (CSP) 也是出了名的棘手,因為正確的 CSP 設置將非常廣泛地取決於所討論的網站,並且應該在部署之前進行大量測試——因此,它有一個姊妹內容安全策略-僅報告4 僅用於測試 CSP 的 HTTP 標頭。

以下是一個非常簡單的內容安全策略 (CSP) 策略的示例,該策略僅允許從提供網站的來源加載資產。


Content-Security-Policy: default-src 'self'

但是,內容安全策略 (CSP) 的可配置性比這個簡單示例中顯示的要好得多。 CSP 包括其他指令,例如script-srcstyle-srcimg-src ,以指定瀏覽器可以從中加載資源(例如 CSS、圖像和字體)的源。 有關如何配置 CSP 的完整列表,請參閱內容安全策略快速參考指南。

X-Content-Type-Options

X-Content-Type-Options HTTP 安全標頭是所有主要瀏覽器都遵守的非標準標頭,可防止由 MIME 類型嗅探導致的跨站點腳本 (XSS) 攻擊5 . 當存在時,此標頭告訴瀏覽器嚴格遵循 Content-Type HTTP 標頭中定義的 MIME 類型,並且瀏覽器不應嘗試為響應數據本身檢測正確的 MIME 類型。 標頭有一個指令——nosniff。


X-Content-Type-Options: nosniff

舊的或未使用的 HTTP 安全標頭

還有一些舊的和未使用的 HTTP 安全標頭。 它們不再被使用,或者不再起作用,因為它們要么是作為臨時修復、實驗引入的,要么是作為非標準計劃引入的,後來要么被棄用,要么被完全取代。 下面是這些 HTTP 安全標頭的列表。

由 Content-Security-Policy 替換的 HTTP 安全標頭

X 框架選項

X-Frame-Options HTTP 安全標頭是現已棄用的標頭,最初由 Microsoft Internet Explorer 引入(並被具有不同程度的統一性和兼容性的其他瀏覽器採用)以保護瀏覽器免受跨站腳本 (XSS)、點擊劫持和其他依賴於放置在 iframe 內的網站的攻擊。

此標頭現在已由 frame-ancestors 內容安全策略 (CSP) 指令替換。 建議使用帶有 frame-ancestors 指令的 CSP 來代替 X-Frame-Options。

X-XSS-保護

X-XSS-Protection HTTP 安全標頭是一種非標準標頭,用於啟用或禁用瀏覽器對跨站點腳本 (XSS) 攻擊的保護。 實際上,攻擊者通常很容易繞過此標頭,因此大多數現代瀏覽器都會忽略此標頭。

公鑰引腳

Public-Key-Pins HTTP 安全標頭用於配置在 Google Chrome 和 Firefox 中引入的公鑰固定 (HPKP) 安全功能,以防止 TLS 證書欺騙。 HPKP 通過讓 Web 服務器向瀏覽器提供網站使用的 TLS 證書公鑰的一組加密哈希值來工作,瀏覽器將反過來使用這些哈希值與它在後續請求中從服務器接收到的證書進行比較。 問題是 HPKP 管理起來相當複雜,並且經常導致可能完全禁用網站訪問的錯誤配置——因此,不再建議使用它。

在 WordPress 中添加 HTTP 安全標頭

當 HTTP 安全標頭在您的 Web 服務器或適用的情況下在您的內容交付網絡 (CDN) 或 Web 應用程序防火牆上配置時,它們的效果最佳。 這允許在每次請求時發送它們。 或者,雖然不太理想,但您可以使用 WordPress 插件為您設置這些標題。

既然我們已經介紹了 HTTP 安全標頭的用途,那麼可以通過以下幾種方式在您的 WordPress 網站上啟用它們。

使用 Apache HTTP Server 在 WordPress 中添加 HTTP 安全標頭

以下是啟用 HTTP 嚴格傳輸安全 (HSTS)、X-Content-Type-Options 和簡單內容安全策略所需的 Apache HTTP Server 配置示例。


<ifModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000"
Header set X-Content-Type-Options "nosniff"
Header set Content-Security-Policy "default-src 'self'"
</ifModule>

使用 Nginx 在 WordPress 中添加 HTTP 安全標頭

同樣,以下是啟用 HTTP 嚴格傳輸安全 (HSTS)、X-Content-Type-Options 和簡單內容安全策略所需的 Nginx 配置示例。


server {
add_header Strict-Transport-Security "max-age=31536000; always;
add_header X-Content-Type-Options "nosniff" always;
add_header Content-Security-Policy "default-src 'self'" always;
}

使用插件在 WordPress 中添加 HTTP 安全標頭

或者,雖然效率較低(因為它依賴 WordPress 本身來修改標頭),但使用 WordPress 插件可能是將 HTTP 安全標頭添加到 WordPress 網站的最簡單方法。 諸如重定向插件之類的插件允許您將自定義 HTTP 標頭添加到您的網站。

如何檢查網站的 HTTP 安全標頭

在 WordPress 網站上添加 HTTP 安全標頭後,您需要確保它們配置正確並按預期工作。 最簡單的測試方法是使用名為 Security Headers 6的免費工具.

使用安全標頭工具就像輸入您的網站 URL 並點擊“掃描”一樣簡單。 然後,您將獲得從 A+ 到 F 的等級,並說明該等級是如何確定的。

本文中使用的參考文獻[ + ]

本文使用的參考資料
1 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
2 https://owasp.org/www-project-secure-headers/#http-strict-transport-security
3 https://web.dev/what-is-mixed-content/
4 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
5 https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing
6 https://securityheaders.com/