2010年に公開されたFiresheepというFirefoxのアドオンの登場により、暗号化されていない同一ネットワーク上の通信をパケットキャプチャすることによって、HTTP Cookie情報を盗みとり、簡単になりすまし(セッションハイジャック)ができることが周知の事実となった。
そのため、今日ではほとんどのWebサイトがすべてのページでSSLによるHTTPS通信を行うような流れとなり、各サイトのサーバー側でHTTPでアクセスしてきた場合、HTTPSにリダイレクトさせるコードを書いて対応していた。
しかし、その場合一時的にHTTPでアクセスするため、その瞬間のセッション情報が盗み出される危険がある。
そこでHTTPではなく、HTTPSに直接アクセスしてほしいことをブラウザに支持するための規定ができた。それがHSTSである。
具体的な対応
HTTP通信を行っているWebサーバー側からStrict-Transport-Securityヘッダを返すことで強制的にHTTPSにアクセスさせる。
具体的な.htaccessでの記述例
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
そして、HTTPSからHTTPに戻す場合には、HSTSを解除する必要があり、下記のように設定する。
Header always unset Strict-Transport-Security
Header add Strict-Transport-Security "max-age=0"