HSTS
HTTP Strict Transport Security
HSTS可以用來防止Session hijacking (Cookie hijacking),例如很多使用者都只會打domain,而不 會指定https
,middleman
就可以redirect到http版本的網站,然後取得登入cookie。
當server在response header中加入Strict-Transport-Security
,例如:Strict-Transport-Security: max-age=31536000;
。當response header含有以上的設定,則遊覽器會有兩種行為:
- 在接下來的31536000秒(即一年)中,瀏覽器向domain或subdomain傳送HTTP請求時,必須採用HTTPS來發起連接,如果對http做request,會自動轉到https。
- 如果TLS certificate失效,不能忽略遊覽器的警告。
limitation
要取得Strict-Transport-Security
header,至少要跟server連線一次才可以,如果在第一次就被攻擊,就沒辦法透過HSTS來保護。
改善方式
- 在遊覽器設定HSTS的domain list
- 將HSTS資訊加到DNS,但這方法很少大規模使用
- 因為HSTS有設定失效時間,攻擊者如果能透過NTP來進行攻擊,可以把系統時間跳到失效HSTS以後,解決方法是認證NTP server或禁止NTP大幅度變化。