我對此一無所知的東西,所以請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代碼有什麼區別?
感謝您對HSTS兩行代碼的解釋。不過,我想也許我的問題不清楚,當我問我是否需要「兩者」。我的意思是「這兩個」是,我需要重定向片段(在我的問題的頂部)和HSTS代碼?或者我應該選擇一個,如果是的話,哪一個?爲什麼? – AlwaysLearning
@AlwaysLearning同時做兩個。沒有重定向的HSTS是無用的,沒有HSTS的重定向可以被中間人攻擊攔截。 –
沒有重定向的HSTS正常工作如果用戶正在使用支持HSTS預加載的現代瀏覽器。 – EricLaw