[4] HSTS (HTTP Strict Transport Security) は、 素のHTTP を用いず、専ら HTTPS のみを用いることを Webサーバーから Webブラウザーに伝達するための仕組みです。 これによって意図せず誤って素のHTTPで当該サーバーに接続することを防ぎ、 素のHTTPを使った攻撃から利用者を護ることを狙いとしています。
[5] 西暦2010年代になって Webブラウザーに実装されると共に、 RFC 6797 として出版されています。
[70] 素のHTTPが安全ではないと考えられるようになった現在、 事実上すべてのサーバーは HSTS ヘッダーを応答に含めるべきです。
[44] HTTPS によって(のみ)提供される Webサーバーでは、 HSTS
を使うことにより、もし http:
URL で当該サーバーの資源が参照されていたとしても、
https:
URL に読み替えてアクセスするよう Webブラウザーに要請することができます。
[45] これにより、意図せず素の HTTP によって接続され、 利用者が MITM 攻撃などの被害を受けることを防止できます。
[6] HSTS は、次のような脅威に対処することを想定しています >>3 2.。
[10] こうした問題は HTTPS (HTTP over TLS) で解決できるとされていますが、 HTTP と HTTPS の両方が提供されていると HTTP 側が脆弱なままになってしまいます。 サーバー側がHTTP を提供していなくても、攻撃者が偽の HTTP サーバーを用意してそこにアクセスさせることが原理的に可能です。 HSTS は HTTPS のみ提供し、 HTTP は提供しないことを明確にすることで、 こうした問題を回避しようとしています。
[11] フィッシングの防止や不正なソフトウェアや Webブラウザーの不具合による問題は、 HSTS の対象外です >>3 2.。
Strict-Transport-Security:
ヘッダー (HTTP)[18] HTTP の Strict-Transport-Security:
応答ヘッダー (通称 STS) は、
当該ホストに関するHSTSポリシーを示すものです >>3 6.1.。
Strict-Transport-Security: max-age=2592000; includeSubDomains... のように指定すると、当該ドメインおよびサブドメインについて、 HSTS が有効になります。この指定は以後30日間 (または上書きされるまで) 有効となります。
max-age
の値は、十分大きければ何でも構いません。
もし問題があっても次回アクセス時に新しいヘッダーを指定すれば更新されるので、
新規サイトでは躊躇なく大きな値にできます。[21] 利用者エージェントがこのヘッダーを含む応答を送ったホストに関するHSTSポリシーを適用しなければならないことを表します >>3 6.1.。
[34] 安全な輸送路上の HTTP にあっては、応答メッセージに
Strict-Transport-Security:
ヘッダーを含めるべきです。
これは複数あってはなりません。 >>3 7.1.
[36] 安全でない輸送路上の HTTP にあっては、応答メッセージに
Strict-Transport-Security:
ヘッダーを含めてはなりません。
>>3 7.2.
[22] STS ヘッダーの値は、指令 (directive)
の零個以上の列です。指令同士は ;
で区切ります。
その前後には LWS も挿入できます。
指令同士の順序は意味を持ちません。 >>3 6.1.
[24] 指令は名前と値で構成され、両者は =
で区切ります。
=
と値を省略することもできます。 =
の前後には LWS
も挿入できます。 >>3 6.1.
[25] 名前は RFC 2616 字句です。 大文字・小文字不区別です。 >>3 6.1.
[27] 同じ名前の指令を複数含めてはなりません。 >>3 6.1.
[26] 値は RFC 2616 の字句または引用文字列です。 >>3 6.1.
[29] 利用者エージェントは、この構文に適合しないヘッダーを無視しなければなりません。 >>3 6.1.
[30] 利用者エージェントは、認識できない指令を無視し、 認識できる指令を処理しなければなりません。 >>3 6.1.
[32] Strict-Transport-Policy:
ヘッダーには次の指令があります。
[31] 追加の指令が必要になった時には IETF Review を経て追加する IANA登録簿が用意されることとされています。 >>3 6.1. 現時点ではIANA登録簿は存在しません。
[48] HTTPサーバーの実装は、 HSTS に対応しなければなりません >>47。
[303] サーバーは、安全な輸送路で要求を受け取った時は、
Strict-Transport-Security:
ヘッダーを送るべきです。
[50] サーバーは、 HSTS を使って TLS のみのクライアントを受け入れる意思があることを示すべきです。 ただし、 HSTS を使うとむしろ安全でなくなる場合 (例えば自己署名証明書を使っている場合) は除きます。 >>47
[37] サーバーは、安全でない輸送路で要求を受け取った時は、
301
などの永続的なリダイレクトを表す応答メッセージを返すべきです。
この時 Location:
ヘッダーには、元の実効要求URL
の URL scheme を https:
に変えたものか、
その他何らかの方法で決めた https:
URL
を指定したものとするべきです。 >>3 7.2.
[49] HTTPクライアントの実装は、 HSTS に対応しなければなりません >>47。
[304] 利用者エージェントは応答メッセージの
Strict-Transport-Security:
ヘッダーを次のようにしなければなりません
>>3 8.1., >>8.4.。
[446] 利用者エージェントは http:
URL
による HTTP要求を送信するに当たり、 既知HSTSホストの情報に基づき書き換えを行います。
[61] 利用者エージェントは WebSocketコンストラクターの処理で HSTS を適用しなければなりません。
[444] 利用者エージェントは、 既知HSTSホストに接続する際に、 安全な輸送路の誤りや警告があれば、接続を終端しなければなりません >>3 8.3.。
[52] HSTS は、 fingerprinting vector です。
[39] Webブラウザーは、HSTSスーパークッキー脆弱性に注意が必要です >>51。
[75] Upgrade-Insecure-Requests:
も参照。
[79] HSTS の処理は、混合内容の検査よりも後に実行されます (main fetch
参照)。ですから HSTS が有効になっていたとしても、 http:
URL が指定されていると、読み込みエラーとなります。
[80] UIR の処理は、混合内容の検査よりも先に実行されます (main fetch)。
従って http:
URL を使った既存の文書との互換性を保ちたいときは、
HSTS だけでなく UIR を使えば良いのです。ただし、 UIR
で格上げされる条件には制約がありますから、注意が必要です
(main fetch 参照)。
[448] Re: Redirects and HSTS ( (Anne van Kesteren 著, 版)) http://lists.w3.org/Archives/Public/public-webappsec/2014Sep/0110.html
[38] Fix the order of CSP, HSTS, Mixed Content, and Referrer https://www.w3.o... · b8c2c49 · whatwg/fetch ( 版) https://github.com/whatwg/fetch/commit/b8c2c4964c233cd3616042c04e2c14e0ff25485d
[449] 664284 – Add HSTS support for websockets ( ( 版)) https://bugzilla.mozilla.org/show_bug.cgi?id=664284
[450] [chrome] Revision 82069 ( ( 版)) http://src.chromium.org/viewvc/chrome?revision=82069&view=revision
[451] Bug 27554 – After the WebSocket object is returned we should probably integrate with HSTS. For Fetch that happen [...] ( ( 版)) https://www.w3.org/Bugs/Public/show_bug.cgi?id=27554
[452] RadicalResearch HSTS Super Cookies ( ( 版)) http://www.radicalresearch.co.uk/lab/hstssupercookies/
[453] Issue 104935 - chromium - Security: HSTS "cookies" do not obey expected policy. - An open-source project to help move the web forward. - Google Project Hosting ( ( 版)) https://code.google.com/p/chromium/issues/detail?id=104935
[454] Issue 258667 - chromium - HSTS pins and HSTS metadata stored even when cookies are rejected - An open-source project to help move the web forward. - Google Project Hosting ( ( 版)) https://code.google.com/p/chromium/issues/detail?id=258667
[455] Chrome Fixes STS Privacy Issue ha.ckers.org web application security lab ( ( 版)) http://ha.ckers.org/blog/20100413/chrome-fixes-sts-privacy-issue/
[447] HSTS Preload Submission ( ( 版)) https://hstspreload.appspot.com/
[40] UPGRADE: Relation to HSTS. · df9adb8 · w3c/webappsec ( 版) https://github.com/w3c/webappsec/commit/df9adb8910b1b09b72dce5cc999b3b725fbcd4f3
[41] Preloading HSTS | Mozilla Security Blog ( 版) https://blog.mozilla.org/security/2012/11/01/preloading-hsts/
[42] [chrome] Contents of /trunk/src/net/http/transport_security_state_static.json ( 版) https://src.chromium.org/viewvc/chrome/trunk/src/net/http/transport_security_state_static.json
[43] HTTP Strict Transport Security comes to Internet Explorer - IEBlog - Site Home - MSDN Blogs ( 版) http://blogs.msdn.com/b/ie/archive/2015/02/16/http-strict-transport-security-comes-to-internet-explorer.aspx
[55] Strict Transport Security - IEInternals - Site Home - MSDN Blogs ( 版) http://blogs.msdn.com/b/ieinternals/archive/2014/08/18/hsts-strict-transport-security-attacks-mitigations-deployment-https.aspx
[56] HTTP Strict Transport Security comes to Internet Explorer - IEBlog - Site Home - MSDN Blogs ( 版) http://blogs.msdn.com/b/ie/archive/2015/02/16/http-strict-transport-security-comes-to-internet-explorer.aspx
[58] HTTP Strict Transport Security comes to Internet Explorer - IEBlog - Site Home - MSDN Blogs ( 版) http://blogs.msdn.com/b/ie/archive/2015/02/16/http-strict-transport-security-comes-to-internet-explorer.aspx
[60] Apply HSTS to WebSocket · whatwg/html@8b46c20 ( 版) https://github.com/whatwg/html/commit/8b46c205cc2b54bb4d57bd7ad12baf9492e40edd
[64] HTTP Strict Transport Security - The Chromium Projects ( 版) https://www.chromium.org/hsts/
[65] google chrome - HSTS Preload list からドメインを削除したい - スタック・オーバーフロー ( 版) http://ja.stackoverflow.com/questions/9510/hsts-preload-list-%E3%81%8B%E3%82%89%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E5%89%8A%E9%99%A4%E3%81%97%E3%81%9F%E3%81%84
Strict-Transport-Security: max-age=10886400; includeSubDomains; preload
[69] HSTS Priming, continued. (Mike West 著, 版) https://lists.w3.org/Archives/Public/public-webappsec/2015Nov/0003.html
[71] Editorial: remove HSTS reference · whatwg/html@96be6c0 ( 版) https://github.com/whatwg/html/commit/96be6c02315d677c48ac334a689a48cbd1929c95
[72] Fix #244: improve HSTS language · whatwg/fetch@6568ab8 ( 版) https://github.com/whatwg/fetch/commit/6568ab88c1fbfb581f63f8e5f020c367ef38e78d
[81] Google Online Security Blog: Bringing HSTS to www.google.com ( ()) https://security.googleblog.com/2016/07/bringing-hsts-to-wwwgooglecom.html
[82] Strict Transport Security ( 版) http://lists.w3.org/Archives/Public/www-archive/2009Dec/att-0048/draft-hodges-strict-transport-sec-06.plain.html
[84] should BroadcastChannel be disabled if a window does not have access to storage? · Issue #3054 · whatwg/html () https://github.com/whatwg/html/issues/3054
[85] Protecting Against HSTS Abuse | WebKit () https://webkit.org/blog/8146/protecting-against-hsts-abuse/
[87] Making .gov More Secure by Default | DotGov () https://home.dotgov.gov/management/preloading/dotgovhttps/
[88] GNU Wget 1.20 Manual () https://www.gnu.org/software/wget/manual/wget.html#index-HSTS