2017-03-17 65 views
3

我對此一無所知的東西,所以請ELI5在您的答覆。除了在.htaccess中強制HTTPS之外,還需要啓用HSTS嗎?

繼從我的供應商,Dreamhost的指示,我安裝了SSL證書,然後添加這些行到我的.htaccess文件強制HTTP請求改寫爲HTTPS請求。

# Redirect http requests to https 
RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

似乎一切都正常工作,即:每一次我嘗試用HTTP域下訪問頁面時,它改寫爲HTTPS和「安全」圖標顯示在地址欄中。

我的問題是,我需要也使HSTS?閱讀它後,它看起來和之前對.htaccess文件進行的更改完全相同。這裏的an excerpt from A2 Hosting(不是我的供應商):

啓用HSTS

當HSTS是爲網站啓用,瀏覽器會自動更改任何 不安全的請求(HTTP://),以確保請求(https://開頭)。所有你 需要做的,使HSTS是添加頁眉到您的網站的.htaccess文件 。 Web瀏覽器認識到這頭,然後照顧 休息,而不需要您進一步干預。

他們建議增加此爲.htaccess:

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS 

Another tutorial,這一次專門針對Dreamhost的,說讓HSTS與迫使HTTPS在.htaccess文件一起,但並沒有真正說爲什麼。本頁建議稍有不同:

Header set Strict-Transport-Security "max-age=31415926; includeSubDomains; preload" env=HTTPS 

我需要「https重寫」代碼段和HSTS嗎?或者只有「https重寫」代碼片段足夠好?我是否需要HSTS代碼,如果是這樣,我的文章中的兩行HSTS代碼有什麼區別?

回答

5

HSTS讓瀏覽器知道默認情況下通過https僅連接,但不同標誌的每個人做的東西有點不同:

  • includeSubdomains

這意味着,如果你的網站是mydomain.com,該政策將適用於所有子域(即foo.mydomain.combar.mydomain.com等)。沒有包括這個。該政策僅適用於有問題的確切域名。

  • 預緊

雖然HSTS是很大的概念,第一次有人類型mydomain.com瀏覽器將嘗試聯繫網站上http方案,因爲它不知道你有你的網站上https其給MITM攻擊者的空間來爲您提供惡意版本的網站(又名TOFU問題)。 要解決這個問題,有針對網站的瀏覽器,應該在https默認聯絡集中的名單,但要能夠讓自己在名單上,你必須有在報頭中的preload標誌。你可以看到更多關於這here

+0

感謝您對HSTS兩行代碼的解釋。不過,我想也許我的問題不清楚,當我問我是否需要「兩者」。我的意思是「這兩個」是,我需要重定向片段(在我的問題的頂部)和HSTS代碼?或者我應該選擇一個,如果是的話,哪一個?爲什麼? – AlwaysLearning

+1

@AlwaysLearning同時做兩個。沒有重定向的HSTS是無用的,沒有HSTS的重定向可以被中間人攻擊攔截。 –

+0

沒有重定向的HSTS正常工作如果用戶正在使用支持HSTS預加載的現代瀏覽器。 – EricLaw

2

默認情況下,如果方案(http或https)未明確指定,則爲http。

因此重定向需要將其重定向到您的首選HTTPS版本,因爲誰鍵入URL大部分遊客將不包括方案,並因此去HTTP版本。

HTTP嚴格傳輸安全(HSTS)是一種安全方法,可確保您始終在https上使用保留。它並不是真的打算消除重定向的需要。特別是,HSTS通過向您的網頁瀏覽器發送消息(使用HTTP響應標頭)來說「請僅爲此網站使用https,爲下一個X時間量」。此消息只能在通過https訪問該網站時發送。因此,如果您不首先重定向,那麼許多訪問者甚至可能不會意識到您擁有https站點,因此無法獲得HSTS指令。

HSTS主要是用來作爲一種方法來改變一個網站,HTTPS的默認,並防止中間人(MITM)攻擊可能試圖讓你在http:例如如果你連接到黑客的無線網絡並進入你的銀行網站,他們將無法劫持這個連接,如果它是通過https完成的,但是能夠通過http完成,那麼攻擊者將攔截http請求並停止重定向發生,讓你保持http並攔截所有來自銀行的消息。

你可以在「預加載」在網頁瀏覽器的代碼,這使安全性更高,因爲你不需要訪問率先拿到HSTS指令該網站通過https的HSTS指令。這應該被告誡,基本上沒有任何迴應,只有在你真正瞭解HSTS的情況下才能考慮到這一點。有many, many, many requests to remove sites from Preload list Chrome至少需要3個月(不保證其他瀏覽器),並且如果您不在https上,則在此期間您的網站將無法訪問。所以這裏真的有危險!特別是如果某些網站是通過https服務的(例如www.example.com),但其中一些網站不是(例如intranet.example.com)。這也是HSTS的危險,但預加載更加危險。

另一點需要注意的是,很多Web代理不會使用HSTS,特別是不預裝列表(如搜索引擎爬蟲,舊的瀏覽器...等)。因此,再次使用HSTS應該用於替代重定向。

HSTS是一個偉大的安全措施,並應在所有網站上使用,但最喜歡的安全措施(一旦他們使用http完全停止),並配有其自身的風險。因此,在部署它之前,請確保您瞭解它。我討厭在沒有解釋它和風險的情況下打開它的網站和教程。理論上,使用HSTS的網站可能不再需要重定向,但實際上仍需要首次訪問以及不理解或實施HSTS的代理。

總結:

  • 始終使用重定向。
  • 強烈地考慮HSTS,但先閱讀它,並從最低年齡開始,並且沒有包含子域和預加載 - 直到您真正理解它們的含義。
  • 如果運行高風險站點,則考慮將您的站點提交給HSTS預加載列表作爲高安全級別,但要注意這裏存在風險。只有在你真正瞭解HSTS並且覺得你需要這種安全級別時才這樣做。
相關問題