[4] [DFN[[[HSTS]]]] ([DFN[HTTP Strict Transport Security]]) は、
[[素のHTTP]] を用いず、専ら [[HTTPS]] のみを用いることを [[Webサーバー]]から
[[Webブラウザー]]に伝達するための仕組みです。
これによって意図せず誤って[[素のHTTP]]で当該[[サーバー]]に接続することを防ぎ、
[[素のHTTP]]を使った攻撃から[[利用者]]を護ることを狙いとしています。

[5] [[西暦2010年代]]になって [[Webブラウザー]]に実装されると共に、 [DFN[[[RFC 6797]]]]
として出版されています。

[70] [[素のHTTP]]が安全ではないと考えられるようになった現在、
事実上すべての[[サーバー]]は [[HSTS]] [[ヘッダー]]を[[応答]]に含めるべきです。

* 仕様書

[REFS[
- [3] '''[CITE@en[RFC 6797 - HTTP Strict Transport Security (HSTS)]] ([TIME[2014-06-02 05:16:10 +09:00]] 版) <http://tools.ietf.org/html/rfc6797>'''
- [47] [CITE@en[RFC 7525 - Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)]] ([TIME[2015-05-29 03:22:56 +09:00]] 版) <https://tools.ietf.org/html/rfc7525#section-3.2>
- [51] [CITE@en[RFC 7469 - Public Key Pinning Extension for HTTP]] ([TIME[2015-05-05 21:00:37 +09:00]] 版) <https://tools.ietf.org/html/rfc7469#section-5>
- [76] [CITE@en-US[Fetch Standard]] ([TIME[2016-05-06 02:41:29 +09:00]] 版) <https://fetch.spec.whatwg.org/#concept-main-fetch>
]REFS]

* 概要

[44] [[HTTPS]] によって(のみ)提供される [[Webサーバー]]では、 [[HSTS]]
を使うことにより、もし [CODE(URI)@en[[[http:]]]] [[URL]] で当該[[サーバー]]の[[資源]]が参照されていたとしても、
[CODE(URI)@en[[[https:]]]] [[URL]] に読み替えてアクセスするよう [[Webブラウザー]]に要請することができます。

[45] これにより、意図せず素の [[HTTP]] によって接続され、 
[[利用者]]が [[MITM]] 攻撃などの被害を受けることを防止できます。

[63] [[HTTP]] の他、 [[WebSocket]] ([CODE(URI)@en[[[ws:]]]]/[CODE(URI)@en[[[wss:]]]])
にも適用されます。

* 脅威モデル

[6] [[HSTS]] は、次のような脅威に対処することを想定しています [SRC[>>3 2.]]。
[FIG(list)[
- [7] ネットワーク上の受動的な攻撃。例えば[[無線LAN]]で[[パケット]]を盗聴して[[セッションID]]
を盗むなど。
- [8] ネットワーク上の能動的な攻撃。[[DNS]] や[[アクセスポイント]]を汚染するなど。
- [9] [[Webサイト]]の実装上の不備。一部のファイルだけ [[HTTPS]] でなくてもアクセスできてしまうなど。
]FIG]

[10] こうした問題は [[HTTPS]] ([[HTTP]] over [[TLS]]) で解決できるとされていますが、
[[HTTP]] と [[HTTPS]] の両方が提供されていると [[HTTP]] 側が脆弱なままになってしまいます。
[[サーバー]]側が[[HTTP]] を提供していなくても、攻撃者が偽の [[HTTP]]
[[サーバー]]を用意してそこにアクセスさせることが原理的に可能です。
[[HSTS]] は [[HTTPS]] のみ提供し、 [[HTTP]] は提供しないことを明確にすることで、
こうした問題を回避しようとしています。

[11] [[フィッシング]]の防止や不正なソフトウェアや [[Webブラウザー]]の不具合による問題は、
[[HSTS]] の対象外です [SRC[>>3 2.]]。

* 用語

[66] [[HSTS]] や関連仕様で次の用語が定義されています。
[FIG(short list)[
- [[合同一致]]
- [[超ドメイン一致]]
- [[HSTSポリシー]]
- [[既知HSTSホスト]]
- [[未知HSTSホスト]]
- [[HSTS pre-loaded list]]
- [[preloadable HSTS host]]
- [[HSTS安全起源]]
- [[条件付きHSTS安全起源]]
]FIG]

* ヘッダー

[14] 次の[[HTTPヘッダー]]が定義されています。
[FIG(list)[
- [CODE(HTTP)@en[[[Strict-Transport-Security:]]]] ([[応答ヘッダー]])
]FIG]

* [CODE(HTTP)@en[Strict-Transport-Security:]] ヘッダー (HTTP)

[18] [[HTTP]] の [DFN[[CODE(HTTP)@en[[[Strict-Transport-Security:]]]]]]
[[応答ヘッダー]] (通称 [DFN[[[STS]]]]) は、
当該[[ホスト]]に関する[[HSTSポリシー]]を示すものです [SRC[>>3 6.1.]]。

[EG[
[57] 例えば [[HTTPS]] の[[応答]]で
[PRE(HTTP code)[
Strict-Transport-Security: [[max-age]]=2592000; [[includeSubDomains]]
]PRE]
... のように指定すると、当該[[ドメイン]]および[[サブドメイン]]について、
[[HSTS]] が有効になります。この指定は以後30日間 (または上書きされるまで) 有効となります。
[CODE(HTTP)@en[[[max-age]]]] の値は、十分大きければ何でも構いません。
もし問題があっても次回アクセス時に新しいヘッダーを指定すれば更新されるので、
新規サイトでは躊躇なく大きな値にできます。
]EG]

** 意味

[21] [[利用者エージェント]]がこの[[ヘッダー]]を含む[[応答]]を送った[[ホスト]]に関する[[HSTSポリシー]]を適用しなければ[['''ならない''']]ことを表します
[SRC[>>3 6.1.]]。

** 文脈

[34] [[安全な輸送路]]上の [[HTTP]] にあっては、[[応答メッセージ]]に
[CODE(HTTP)@en[[[Strict-Transport-Security:]]]] [[ヘッダー]]を含める[['''べきです''']]。
これは複数あっては[['''なりません''']]。 [SRC[>>3 7.1.]]

;; [35] [[キャッシュ]]や[[負荷分散]]の仕組みなどの都合で一様に付加することが難しいこともあるため、
[['''必須''']]ではなく[['''推奨''']]となっています [SRC[>>3 7.1.]]。

[36] [[安全でない輸送路]]上の [[HTTP]] にあっては、[[応答メッセージ]]に
[CODE(HTTP)@en[[[Strict-Transport-Security:]]]] [[ヘッダー]]を含めては[['''なりません''']]。
[SRC[>>3 7.2.]]

** 構文

[22] [[STS]] [[ヘッダー]]の値は、[[指令]] ([[directive]])
の零個以上の列です。[[指令]]同士は [CODE[[[;]]]] で区切ります。
その前後には [[LWS]] も挿入できます。
[[指令]]同士の順序は意味を持ちません。 [SRC[>>3 6.1.]]

;; [23] 完全に空になることや、[CODE[[[;]]]] が先頭や末尾に来ることや、
[CODE[[[;]]]] が連続することも認められています。

[FIG(railroad)[
= ?
== [[指令]]
== *
=== [[OWS]]
=== [CODE(HTTP)[[[;]]]]
=== [[OWS]]
=== [[指令]]
]FIG]

[24] [[指令]]は名前と値で構成され、両者は [CODE[[[=]]]] で区切ります。
[CODE[[[=]]]] と値を省略することもできます。 [CODE[[[=]]]] の前後には [[LWS]]
も挿入できます。 [SRC[>>3 6.1.]]

[25] 名前は [[RFC 2616]] [[字句]]です。
[[大文字・小文字不区別]]です。 [SRC[>>3 6.1.]]

;; [28] [[字句]]は [[ASCII文字]]なので、[[ASCII大文字・小文字不区別]]です。

[27] 同じ名前の[[指令]]を複数含めては[['''なりません''']]。 [SRC[>>3 6.1.]]

[26] 値は [[RFC 2616]] の[[字句]]または[[引用文字列]]です。
[SRC[>>3 6.1.]]

[FIG(railroad)[
= [[字句]]
= [CODE(HTTP)[[[=]]]]
= |
== [[字句]]
== [[引用文字列]]
]FIG]

[29] [[利用者エージェント]]は、この構文に適合しない[[ヘッダー]]を無視しなければ[['''なりません''']]。
[SRC[>>3 6.1.]]

[30] [[利用者エージェント]]は、認識できない[[指令]]を無視し、
認識できる[[指令]]を処理しなければ[['''なりません''']]。 [SRC[>>3 6.1.]]

** 処理

[86] [[混合内容][Mixed Content]]の処理に影響することがあります。

* 指令

[32] [CODE(HTTP)@en[[[Strict-Transport-Policy:]]]] [[ヘッダー]]には次の[[指令]]があります。
[FIG(short list)[
- [CODE(HTTP)@en[max-age][HSTS max-age]] [SRC[>>3 6.1.1.]]
- [CODE(HTTP)@en[[[includeSubDomains]]]] [SRC[>>3 6.1.2.]]
- [CODE(HTTP)@en[[[preload]]]]
]FIG]

[31] 追加の[[指令]]が必要になった時には [[IETF Review]] を経て追加する
[[IANA登録簿]]が用意されることとされています。 [SRC[>>3 6.1.]]
現時点では[[IANA登録簿]]は存在しません。

[33] [CODE(HTTP)@en[max-age][HSTS max-age]] は[['''必須''']]です。

;; [54] [[指令]]の一覧は、 >>53 の [[JSON]] データファイルに含まれています。
[REFS[
- [53] [CITE@en[data-web-defs/headers.txt at master · manakai/data-web-defs]] ([TIME[2015-06-06 23:38:30 +09:00]] 版) <https://github.com/manakai/data-web-defs/blob/master/doc/headers.txt>
]REFS]

* サーバーの処理

[48] [[HTTPサーバー]]の実装は、 [[HSTS]] に対応しなければ[['''なりません''']] [SRC[>>47]]。

[303] [[サーバー]]は、[[安全な輸送路]]で[[要求]]を受け取った時は、
[CODE(HTTP)@en[[[Strict-Transport-Security:]]]] [[ヘッダー]]を送るべきです。

[50] [[サーバー]]は、 [[HSTS]] を使って [[TLS]] のみの[[クライアント]]を受け入れる意思があることを示す[['''べきです''']]。
ただし、 [[HSTS]] を使うとむしろ安全でなくなる場合 (例えば[[自己署名証明書]]を使っている場合)
は除きます。 [SRC[>>47]]

[37] [[サーバー]]は、[[安全でない輸送路]]で[[要求]]を受け取った時は、
[CODE(HTTP)[[[301]]]] などの永続的な[[リダイレクト]]を表す[[応答メッセージ]]を返す[['''べきです''']]。
この時 [CODE(HTTP)@en[[[Location:]]]] [[ヘッダー]]には、元の[[実効要求URL]]
の [[URL scheme]] を [CODE(URI)@en[[[https:]]]] に変えたものか、
その他何らかの方法で決めた [CODE(URI)@en[[[https:]]]] [[URL]]
を指定したものとする[['''べきです''']]。 [SRC[>>3 7.2.]]

;; [302] [['''必須''']]でなく[['''推奨''']]であるのは、サーバー側の構成上の都合でそう設定できない場合があり得ることや、
[[リダイレクト]]の存在によって攻撃の危険性が生じることを避けたい場合を考慮しているようです。
[SRC[>>3 7.2.]]

;; [46] 一旦 [[Webブラウザー]]が [[HSTS]] を受信すると、 ([[既知HSTSホスト]]である間は)
その[[サーバー]]に素の [[HTTP]] で接続することはできなくなります。
ですから、 [[HSTS]] を使う場合には、素の [[HTTP]] の[[サーバー]]は [[HTTPS]]
に[[リダイレクト]]する以外の機能を提供しても意味がありません。

* 利用者エージェントの処理

[49] [[HTTPクライアント]]の実装は、 [[HSTS]] に対応しなければ[['''なりません''']] [SRC[>>47]]。

[304] [[利用者エージェント]]は[[応答メッセージ]]の
[CODE(HTTP)@en[[[Strict-Transport-Security:]]]] [[ヘッダー]]を次のようにしなければなりません
[SRC[>>3 8.1., >>8.4.]]。
[FIG(steps)[
= [305] [[安全でない輸送路]]なら、無視します。
= [308] [[安全な輸送路]]に関する[[誤り]]や[[警告]]があれば、無視します。
= [306] 複数の[[ヘッダー]]があれば、最初のもののみを処理し、他は無視します。
= [307] 構文的に正しくなければ、無視します。
= [312] [[合同一致]]する[[既知HSTSホスト]]を探します。
=- [313] 見つかれば、
=-- [311] [CODE(HTTP)@en[[[max-age]]]] が[[零]]なら、この[[既知HSTSホスト]]の情報を削除します。
=-- [310] それ以外なら、 [CODE(HTTP)@en[[[max-age]]]] や
[CODE(HTTP)@en[[[includeSubDomains]]]] の情報を更新します。
=- [314] 見つからなければ、
=-- [315] [[ホスト]]が[[IPアドレス]]で指定されたものなら、何もしません。
=-- [309] そうでなければ、新たに[[既知HSTSホスト]]とします。
]FIG]

;; [445] [CODE(HTTP)@en[[[Strict-Transport-Security:]]]] [[ヘッダー]]が指定されていないからといって[[既知HSTSホスト]]から削除してはいけません。

[446] [[利用者エージェント]]は [CODE(URI)@en[[[http:]]]] [[URL]]
による [[HTTP要求]]を送信するに当たり、 [[既知HSTSホスト]]の情報に基づき書き換えを行います。

;; [[main fetch]] 参照。

[HISTORY[
[61] [[利用者エージェント]]は [[WebSocketコンストラクター]]の処理で
[[HSTS]] を適用しなければなりません。

;; [[WebSocketコンストラクター]]参照。
]HISTORY]

[444] [[利用者エージェント]]は、 [[既知HSTSホスト]]に[[接続]]する際に、
[[安全な輸送路]]の[[誤り]]や[[警告]]があれば、[[接続]]を終端しなければ[['''なりません''']]
[SRC[>>3 8.3.]]。

;; [62] その方法として [[fatal alert]] を使うべきなのか、通常の終了でもいいのかは定かではありません。

* セキュリティー

[52] [[HSTS]] は、 [[fingerprinting vector]] です。

[39] [[Webブラウザー]]は、[[HSTSスーパークッキー]]脆弱性に注意が必要です [SRC[>>51]]。

* ポート

[59] [[HSTS]] は[[ドメイン]]または[[ドメイン]]および[[サブドメイン]]群に対する指定なので、
すべての[[ポート]]に適用されます。

* 関連

[75] [CODE(HTTP)@en[Upgrade-Insecure-Requests:]] も参照。

[78] [[iOS]] には [[ATS]] なる仕組みが存在します。

[79] [[HSTS]] の処理は、[[混合内容]]の検査よりも後に実行されます ([[main fetch]]
参照)。ですから [[HSTS]] が有効になっていたとしても、 [CODE(URI)@en[http:]]
[[URL]] が指定されていると、読み込みエラーとなります。

[80] [[UIR]] の処理は、[[混合内容]]の検査よりも先に実行されます ([[main fetch]])。
従って [CODE(URI)@en[http:]] [[URL]] を使った既存の[[文書]]との互換性を保ちたいときは、
[[HSTS]] だけでなく [[UIR]] を使えば良いのです。ただし、 [[UIR]]
で[[格上げ]]される条件には制約がありますから、注意が必要です
([[main fetch]] 参照)。

* 歴史

[REFS[
- [20] [CITE[ForceHTTPS]] ([TIME[2014-06-06 14:25:14 +09:00]] 版) <https://crypto.stanford.edu/forcehttps/>
- [19] [CITE@en[fyi: Strict Transport Security specification]]
([[Hodges, Jeff]] 著, [TIME[2009-09-19 07:21:05 +09:00]] 版)
<http://lists.w3.org/Archives/Public/public-webapps/2009JulSep/1160.html>
- [17] [CITE[Chromium Blog: Security in Depth: New Security Features]]
( ([TIME[2012-11-17 12:03:40 +09:00]] 版))
<http://blog.chromium.org/2010/01/security-in-depth-new-security-features.html>
- [13] [CITE@en-US[Firefox 4: HTTP Strict Transport Security (force HTTPS) ✩ Mozilla Hacks – the Web developer blog]]
( ([TIME[2011-04-24 12:29:35 +09:00]] 版))
<http://hacks.mozilla.org/2010/08/firefox-4-http-strict-transport-security-force-https/>
- [12] [CITE@en[draft-hodges-strict-transport-sec - HTTP Strict Transport Security (HSTS)]]
<http://tools.ietf.org/html/draft-hodges-strict-transport-sec>
- [16] [CITE@en[draft-ietf-websec-strict-transport-sec-14 - HTTP Strict Transport Security (HSTS)]]
( ([TIME[2012-10-04 06:12:04 +09:00]] 版))
<http://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14>
]REFS]

** Fetch との統合

[REFS[
- [1] [CITE[Call out HSTS. https://www.w3.org/Bugs/Public/show_bug.cgi?id=22645 · d64282d · whatwg/fetch]]
( ([TIME[2013-11-15 08:34:35 +09:00]] 版))
<https://github.com/whatwg/fetch/commit/d64282df7f5ca668f79b3f8d2cdbb99cae303476>
- [2] [CITE[Make HSTS text more detailed per https://www.w3.org/Bugs/Public/show_bug... · 6ae0b8e · whatwg/fetch]]
( ([TIME[2014-06-05 12:00:21 +09:00]] 版))
<https://github.com/whatwg/fetch/commit/6ae0b8e2bbf7362396eb697203753d09cfca6ea0>
]REFS]

[448] [CITE@en[Re: Redirects and HSTS]]
( ([[Anne van Kesteren]] 著, [TIME[2014-09-26 21:11:35 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-webappsec/2014Sep/0110.html>

[38] [CITE@en[Fix the order of CSP, HSTS, Mixed Content, and Referrer https://www.w3.o... · b8c2c49 · whatwg/fetch]]
([TIME[2015-01-28 18:20:37 +09:00]] 版)
<https://github.com/whatwg/fetch/commit/b8c2c4964c233cd3616042c04e2c14e0ff25485d>

** Web Sockets への適用

[449] [CITE@en[664284 – Add HSTS support for websockets]]
( ([TIME[2014-12-11 11:50:38 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=664284>

[450] [CITE@en[''''''[''''''chrome'''''']'''''' Revision 82069]]
( ([TIME[2014-12-11 11:51:03 +09:00]] 版))
<http://src.chromium.org/viewvc/chrome?revision=82069&view=revision>

[451] [CITE@en[Bug 27554 – After the WebSocket object is returned we should probably integrate with HSTS. For Fetch that happen ''''''[''''''...'''''']'''''']]
( ([TIME[2014-12-11 11:51:13 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=27554>

** HSTS スーパークッキー問題

[452] [CITE@en[RadicalResearch HSTS Super Cookies]]
( ([TIME[2015-01-08 12:25:38 +09:00]] 版))
<http://www.radicalresearch.co.uk/lab/hstssupercookies/>

[453] [CITE[Issue 104935 - chromium - Security: HSTS "cookies" do not obey expected policy. - An open-source project to help move the web forward. - Google Project Hosting]]
( ([TIME[2015-01-08 12:25:59 +09:00]] 版))
<https://code.google.com/p/chromium/issues/detail?id=104935>

[454] [CITE[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]]
( ([TIME[2015-01-08 12:26:08 +09:00]] 版))
<https://code.google.com/p/chromium/issues/detail?id=258667>

[455] [CITE[Chrome Fixes STS Privacy Issue ha.ckers.org web application security lab]]
( ([TIME[2015-01-08 12:26:25 +09:00]] 版))
<http://ha.ckers.org/blog/20100413/chrome-fixes-sts-privacy-issue/>

* 実装

[REFS[
- [15] [CITE@ja[HTTP Strict Transport Security - Security | MDN]]
( ([TIME[2012-08-04 21:26:55 +09:00]] 版))
<https://developer.mozilla.org/ja/docs/Security/HTTP_Strict_Transport_Security>
]REFS]

[447] [CITE[HSTS Preload Submission]]
( ([TIME[2014-09-16 03:36:42 +09:00]] 版))
<https://hstspreload.appspot.com/>

[40] [CITE@en[UPGRADE: Relation to HSTS. · df9adb8 · w3c/webappsec]]
([TIME[2015-02-13 13:56:15 +09:00]] 版)
<https://github.com/w3c/webappsec/commit/df9adb8910b1b09b72dce5cc999b3b725fbcd4f3>

[41] [CITE@en-US[Preloading HSTS | Mozilla Security Blog]]
([TIME[2015-03-11 18:32:56 +09:00]] 版)
<https://blog.mozilla.org/security/2012/11/01/preloading-hsts/>

[42] [CITE@en[''''''[''''''chrome'''''']'''''' Contents of /trunk/src/net/http/transport_security_state_static.json]]
([TIME[2015-03-11 18:33:29 +09:00]] 版)
<https://src.chromium.org/viewvc/chrome/trunk/src/net/http/transport_security_state_static.json>

[43] [CITE@en[HTTP Strict Transport Security comes to Internet Explorer - IEBlog - Site Home - MSDN Blogs]]
([TIME[2015-03-11 18:36:00 +09:00]] 版)
<http://blogs.msdn.com/b/ie/archive/2015/02/16/http-strict-transport-security-comes-to-internet-explorer.aspx>

[55] [CITE@en[Strict Transport Security - IEInternals - Site Home - MSDN Blogs]]
([TIME[2015-06-06 23:48:48 +09:00]] 版)
<http://blogs.msdn.com/b/ieinternals/archive/2014/08/18/hsts-strict-transport-security-attacks-mitigations-deployment-https.aspx>

[56] [CITE@en[HTTP Strict Transport Security comes to Internet Explorer - IEBlog - Site Home - MSDN Blogs]]
([TIME[2015-06-06 23:52:26 +09:00]] 版)
<http://blogs.msdn.com/b/ie/archive/2015/02/16/http-strict-transport-security-comes-to-internet-explorer.aspx>

[58] [CITE@en[HTTP Strict Transport Security comes to Internet Explorer - IEBlog - Site Home - MSDN Blogs]]
([TIME[2015-09-04 13:37:59 +09:00]] 版)
<http://blogs.msdn.com/b/ie/archive/2015/02/16/http-strict-transport-security-comes-to-internet-explorer.aspx>

[60] [CITE@en[Apply HSTS to WebSocket · whatwg/html@8b46c20]]
([TIME[2015-09-19 13:23:23 +09:00]] 版)
<https://github.com/whatwg/html/commit/8b46c205cc2b54bb4d57bd7ad12baf9492e40edd>

[64] [CITE[HTTP Strict Transport Security - The Chromium Projects]]
([TIME[2015-10-06 21:44:47 +09:00]] 版)
<https://www.chromium.org/hsts/>

[65] [CITE[google chrome - HSTS Preload list からドメインを削除したい - スタック・オーバーフロー]]
([TIME[2015-10-06 21:52:38 +09:00]] 版)
<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>

[67] 
[PRE(HTTP code)[
Strict-Transport-Security: max-age=10886400; includeSubDomains; preload
]PRE]


[FIG(quote)[
[FIGCAPTION[
[68] [CITE@en[HSTS Priming]]
([TIME[2015-11-07 02:51:37 +09:00]] 版)
<https://mikewest.github.io/hsts-priming/>
]FIGCAPTION]

> This document proposes modifications to Strict Transport Security’s behavior in order to mitigate the risk that mixed content blocking will prevent migrations from HTTP to HTTPS.

]FIG]


[69] [CITE@en[HSTS Priming, continued.]]
([[Mike West]] 著, [TIME[2015-11-06 23:33:11 +09:00]] 版)
<https://lists.w3.org/Archives/Public/public-webappsec/2015Nov/0003.html>

[71] [CITE@en[Editorial: remove HSTS reference · whatwg/html@96be6c0]]
([TIME[2016-03-16 14:15:57 +09:00]] 版)
<https://github.com/whatwg/html/commit/96be6c02315d677c48ac334a689a48cbd1929c95>

[72] [CITE@en[Fix #244: improve HSTS language · whatwg/fetch@6568ab8]]
([TIME[2016-03-27 22:44:45 +09:00]] 版)
<https://github.com/whatwg/fetch/commit/6568ab88c1fbfb581f63f8e5f020c367ef38e78d>

[FIG(quote)[
[FIGCAPTION[
[73] [CITE@en[GitHub]]
([TIME[2016-04-18 00:54:38 +09:00]] 版)
<https://github.com/>
]FIGCAPTION]

> Strict-Transport-Security:max-age=31536000; includeSubdomains; preload

]FIG]


[FIG(quote)[
[FIGCAPTION[
[74] [CITE@ja[Twitter]]
([TIME[2016-04-18 00:56:15 +09:00]] 版)
<https://twitter.com/>
]FIGCAPTION]

> strict-transport-security:max-age=631138519

]FIG]

[FIG(quote)[
[FIGCAPTION[
[77] [CITE@en[921907 – Enable OCSP must-staple feature]]
( ([TIME[2016-05-09 21:47:49 +09:00]]))
<https://bugzilla.mozilla.org/show_bug.cgi?id=921907>
]FIGCAPTION]

> Bug #901698 seems to be more about the HSTS-style Must-Staple, not the x509v3 extension. That work seems to be stalled, because it suffers from the first-connection problem or scalability issues if Must-Staple preload lists have to be distributed.

]FIG]


[81] [CITE@en[Google Online Security Blog: Bringing HSTS to www.google.com]]
( ([TIME[2016-08-30 17:06:08 +09:00]]))
<https://security.googleblog.com/2016/07/bringing-hsts-to-wwwgooglecom.html>

[82] [CITE@en-US[Strict Transport Security]]
([TIME[2009-12-19 07:41:08 +09:00]] 版)
<http://lists.w3.org/Archives/Public/www-archive/2009Dec/att-0048/draft-hodges-strict-transport-sec-06.plain.html>

[FIG(quote)[
[FIGCAPTION[
[83] [CITE@en[Creating Safari Content-Blocking Rules]]
([TIME[2017-06-06 17:08:03 +09:00]])
<https://developer.apple.com/library/content/documentation/Extensions/Conceptual/ContentBlockingRules/CreatingRules/CreatingRules.html#//apple_ref/doc/uid/TP40016265-CH2-SW1>
]FIGCAPTION]

> make-https
> Changes a URL from http to https before making a server request. URLs with a specified port (other than the default port 80) and links using other protocols are not affected.

]FIG]


[84] [CITE@en[should BroadcastChannel be disabled if a window does not have access to storage? · Issue #3054 · whatwg/html]]
([TIME[2017-12-21 00:24:30 +09:00]])
<https://github.com/whatwg/html/issues/3054>

[85] [CITE[Protecting Against HSTS Abuse | WebKit]]
([TIME[2018-05-01 06:00:57 +09:00]])
<https://webkit.org/blog/8146/protecting-against-hsts-abuse/>

[87] [CITE@en-US[Making .gov More Secure by Default | DotGov]]
([TIME[2020-06-22 10:22:35 +09:00]])
<https://home.dotgov.gov/management/preloading/dotgovhttps/>

[88] [CITE@en[GNU Wget 1.20 Manual]]
([TIME[2020-10-01T07:27:47.000Z]])
<https://www.gnu.org/software/wget/manual/wget.html#index-HSTS>