HSTSとリダイレクトの違い

リダイレクトの脆弱性

HTTPからHTTPSへのリダイレクトは、通常Webサーバの機能として処理します。

Apacheの場合は主で.htaccessにリダイレクトを実現可能です。

ただし、リダイレクト処理の場合、一度はHTTPで通信が発生してしまうため、データが平文で送信される危険性があります。

例えばCookieの場合で言うと、セッションIDにSecure属性が付いていなかった場合には、セッションIDを含むCookieが平文で送信されてしまいます。

HSTSとは

HSTSを利用した場合、初回アクセス時にWebサーバから、次回接続をHTTPSで行うように指定することができます。よって2回目以降の通信に関してはHTTPSを強制することが可能です。

典型的なHSTSの設定

HSTSの設定は、以下のようなHSTS用のHTTPヘッダを追加するだけです。

Strict-Transport-Security: max-age=31536000; includeSubdomains

上記の31536000は1年を表します。includeSubdomainsでサブドメインも対象にしています。

HSTS Preload

リダイレクトの場合、ユーザがHTTPでアクセスする度にデータが平文で送信されてしまいます。HSTSを使えば、HTTPでアクセスした場合において、データが暗号化されないのは初回接続時のみです。

逆に言えば、HSTSを使ったとしても、ユーザが一発目でHTTPSではなくHTTPで繋ぎに行った場合においては、データは平文で送信されてしまうということです。

これを防ぐために、HSTS Preloadという仕組みがあります。

以下の記事が分かりやすいです。要は、HSTS Preloadのリストに登録済みのサイトは、予めHTTPSで通信するようにブラウザに通知する仕組みです。Googleが取りまとめています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)