HSTS – 如何使用HTTP嚴格傳輸安全

HSTS – 如何使用HTTP嚴格傳輸安全

確保為您的WordPress網站正確設定安全性非常重要,尤其是在保護自己免受黑客攻擊方面。您可以實施許多不同的增強功能和最佳WordPress安全實踐,以確保您的網站被鎖定。

如果您的WordPress網站通過HTTPS執行,那麼我們建議實施的增強功能之一是HSTS安全標頭,因為它可以幫助防止中間人攻擊 (MitM) 和cookie劫持。

什麼是HSTS(嚴格的傳輸安全)?

HSTS代表HTTP嚴格傳輸安全性,由IETF在2012年的RFC 6797中指定。建立它是為了在站點通過HTTPS執行時強制瀏覽器使用安全連線。它是您新增到Web伺服器的安全標頭,並在響應標頭中反映為Strict-Transport-Security。HSTS很重要,因為它解決了以下問題:

  • 訪問者嘗試使用您網站頁面的不安全版本 (HTTP://) 的任何嘗試都將自動轉發到安全版本 (HTTPS://)。
  • 舊的HTTP書籤和輸入您網站的HTTP版本的人會讓您面臨中間人攻擊。在這些攻擊中,攻擊者改變各方之間的通訊並誘使他們認為他們仍在相互通訊。
  • 不允許覆蓋無效的證書訊息,這反過來又保護了訪問者。
  • Cookie劫持:當有人通過不安全的連線竊取會話cookie時,就會發生這種情況。Cookie可以包含各種有價值的資訊,例如信用卡資訊、姓名、地址等。

如何將HSTS新增到WordPress網站

從技術上講,您將HSTS新增到Web伺服器本身,然後將其應用於對您的WordPress站點的HTTP請求。通常在從HTTP重定向到HTTPS時會新增301重定向。Google已正式表示您可以同時使用301伺服器重定向和HSTS標頭。

雖然我們的系統預設更喜歡HTTPS版本,但您也可以通過將您的HTTP站點重定向到您的HTTPS版本並在您的伺服器上實施HSTS標頭,使其他搜尋引擎更清楚這一點。 Zineb Ait Bahajji,谷歌安全團隊

有不同型別的指令和/或安全級別可以應用於HSTS標頭。下面是使用max-age指令的最基本的一種。這定義了Web伺服器應僅通過HTTPS傳送的時間(以秒為單位)。

在Apache中啟用HSTS

將以下程式碼新增到您的虛擬主機檔案中。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Header always set Strict-Transport-Security max-age=31536000
Header always set Strict-Transport-Security max-age=31536000
Header always set Strict-Transport-Security max-age=31536000

在NGINX中啟用 HSTS

將以下程式碼新增到您的NGINX配置中。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
add_header Strict-Transport-Security max-age=31536000
add_header Strict-Transport-Security max-age=31536000
add_header Strict-Transport-Security max-age=31536000

事實上,新增HSTS標頭有效能優勢。如果有人試圖通過HTTP訪問您的站點,而不是發出HTTP請求,它只是重定向到HTTPS版本。

預載入HSTS

還有HSTS預載入。這基本上是將您的網站和/或域放入瀏覽器中實際內建的已批准HSTS列表中。谷歌官方編譯了這個列表,它被Chrome、Firefox、Opera、Safari、IE11和Edge使用。將您的站點提交到官方HSTS預載入列表

預載入HSTS

預載入HSTS

但是,您必須滿足一些額外要求才有資格。

  1. 伺服器必須具有有效的SSL/TLS證書。
  2. 將所有流量重定向到HTTPS。
  3. 在基本域上提供HSTS。
  4. 通過HTTPS為所有子域提供服務,特別包括www子域(如果存在)。
  5. 到期時間必須至少為1年(31536000 秒)
  6. 必須指定includeSubdomains令牌指令
  7. 必須指定預載入令牌指令。

為此,它需要將額外的子域和預載入指令新增到您的HSTS標頭中。以下是更新後的HSTS標頭的示例。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

公平警告:從預載入列表中刪除您的域可能是一個困難且耗時的過程,因此請確保您將長期使用HTTPS。

驗證HSTS標頭

有幾種簡單的方法可以檢查HSTS是否在您的WordPress網站上執行。您可以啟動Google Chrome Devtools,單擊“網路”選項卡並檢視標題選項卡。正如您在下面的閃電博網站上看到的那樣,正在應用HSTS值:“strict-transport-security: max-age=31536000”。

驗證HSTS標頭

您還可以使用免費的線上工具(如securityheaders.io)掃描您的WordPress網站,該工具會讓您知道是否應用了strict-transport-security標頭。

strict-transport-security標頭

HSTS瀏覽器支援

根據Caniuse的說法,瀏覽器對HSTS的支援非常廣泛,全球超過80%,美國超過95%。2015年在IE11中新增了對HSTS的支援,目前唯一不支援它的現代瀏覽器是Opera Mini。

瀏覽器對HSTS的支援

我們還建議您檢視Tim Kadlec關於HSTS和Let’s Encrypt的這篇文章。

HSTS對SEO的影響

在您的網站獲得批准幷包含在HSTS預載入列表中後,您可能會注意到來自Google Search Console或其他第三方SEO工具的關於307重定向的警告。這是因為當有人嘗試通過HTTP訪問您的網站時,瀏覽器中會發生307重定向,而不是301重定向(如下所示)。

HSTS – 嚴格傳輸安全307重定向

HSTS – 嚴格傳輸安全307重定向

通常307重定向僅用於臨時重定向。301重定向用於已永久移動的URL。那麼它不應該使用301重定向嗎?那麼這對SEO的影響呢?

嗯,事實上,301重定向仍在幕後發生。307重定向發生在瀏覽器級別,而不是伺服器級別。您可以通過在伺服器級別檢查重定向的工具(例如httpstatus )執行該站點,您會發現實際上301重定向仍在發生。因此,您無需擔心HSTS標頭會影響您的SEO。

HSTS 301重定向

HSTS 301重定向

評論留言