我們應該要在 Response Header 裡面設定一個叫做 Strict-Transport-Security (HSTS) 的玩意兒,來告訴 client 說我們接下來的溝通都使用 https 吧,透過 HSTS header,接下來的特定時間長度內(max-age)的連線將會自動採用 https,如以一來可以:
避免中間人攻擊
使用者通常不會自行指定使用 https,而是透過 http 再 redirect,此階段是不安全的
中間人攻擊雖然很有可能造成憑證無效,但通常使用者會自行忽略警告 … 透過 HSTS 設定,使用者將不再被允許忽略警告
省去 redirect 成本
在 nginx 裡面的設定方法為在設定檔的 server 區段插入下列設定(max-age為設定有效的秒數,建議至少半年以上):
代碼: 選擇全部
add_header Strict-Transport-Security "max-age=63072000;";
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";