6. Syntax (構文)
本セクションでは、Strict-Transport-Security HTTPレスポンスヘッダーフィールドとそのディレクティブの構文を定義し、いくつかの例を提供する。
次に、セクション7 ("Server Processing Model") では、ホストがこのヘッダーフィールドを使用してHSTSポリシーを宣言する方法を詳細に説明し、セクション8 ("User Agent Processing Model") では、ユーザーエージェントがヘッダーフィールドを処理しHSTSポリシーを適用する方法を詳細に説明する。
6.1. Strict-Transport-Security HTTP Response Header Field (Strict-Transport-Security HTTPレスポンスヘッダーフィールド)
Strict-Transport-Security HTTPレスポンスヘッダーフィールド (STSヘッダーフィールド) は、このヘッダーフィールドを含むレスポンスメッセージを発行したホストに対してHSTSポリシーを実行しなければならない (MUST) ことをUAに指示する。
STSヘッダーフィールドのABNF (拡張バッカス・ナウア記法 (Augmented Backus-Naur Form)) 構文は以下の通り。これは [RFC2616] のセクション2で定義された一般的な構文に基づいている ("暗黙的線形空白 (implied linear whitespace)" の概念を含み、"暗黙の *LWS" とも呼ばれる)。
Strict-Transport-Security = "Strict-Transport-Security" ":"
[ directive ] *( ";" [ directive ] )
directive = directive-name [ "=" directive-value ]
directive-name = token
directive-value = token | quoted-string
ここで:
token = <token, defined in [RFC2616], Section 2.2>
quoted-string = <quoted-string, defined in [RFC2616], Section 2.2>
本仕様で定義される2つのディレクティブは以下の通り。ディレクティブの全体的な要件は:
-
ディレクティブが出現する順序は重要ではない。
-
すべてのディレクティブはSTSヘッダーフィールド内で一度だけ出現しなければならない (MUST)。ディレクティブは、その定義で規定されているように、オプションまたは必須である。
-
ディレクティブ名は大文字と小文字を区別しない。
-
UAは、本仕様で定義されている構文に準拠しないディレクティブまたはその他のヘッダーフィールド値データを含むSTSヘッダーフィールドを無視しなければならない (MUST)。
-
STSヘッダーフィールドにUAが認識できないディレクティブが含まれている場合、UAは認識できないディレクティブを無視しなければならず (MUST)、STSヘッダーフィールドが他の点で上記の要件 (1から4) を満たしている場合、UAは認識されたディレクティブを処理しなければならない (MUST)。
STSヘッダーフィールドのセマンティクス機能を拡張する追加のディレクティブは、他の仕様で定義することができ、その際にレジストリが定義される (IETFレビュー [RFC5226] のIANAポリシー定義を持つ)。
注 (NOTE): そのような将来のディレクティブは、本仕様のみを実装するUAおよび一般的に非準拠のUAによって無視される。詳細については、セクション14.2 ("Non-Conformant User Agent Implications") を参照。
6.1.1. The max-age Directive (max-ageディレクティブ)
必須 (REQUIRED) の"max-age"ディレクティブは、STSヘッダーフィールドを受信した後の秒数を指定し、その期間中UAはホスト (メッセージを受信したホスト) を既知のHSTSホストとして扱う。セクション8.1.1 ("Noting an HSTS Host - Storage Model") も参照。delta-seconds生成は [RFC2616] で指定されている。
max-ageディレクティブの必須 (REQUIRED) 値 (必要に応じて引用符文字列エスケープ後) の構文は次のように定義される:
max-age-value = delta-seconds
delta-seconds = <1*DIGIT, defined in [RFC2616], Section 3.3.2>
注 (NOTE): max-age値がゼロ (つまり、"max-age=0") の場合、ホストを既知のHSTSホストとして扱うことを停止するようUAに通知し、includeSubDomainsディレクティブ (そのHSTSホストに対して主張されている場合) も含まれる。セクション8.1 ("Strict-Transport-Security Response Header Field Processing") も参照。
6.1.2. The includeSubDomains Directive (includeSubDomainsディレクティブ)
オプション (OPTIONAL) の"includeSubDomains"ディレクティブは値なしのディレクティブであり、存在する場合 (つまり、"主張"されている場合)、HSTSポリシーがこのHSTSホストおよびホストのドメイン名の任意のサブドメインに適用されることをUAに通知する。
6.2. Examples (例)
以下のHSTSヘッダーフィールドは、HSTSポリシーが1年間有効である (1年は約31536000秒) ことを規定し、ポリシーはそれを発行したHSTSホストのドメインのみに適用される:
Strict-Transport-Security: max-age=31536000
以下のHSTSヘッダーフィールドは、HSTSポリシーが約6ヶ月間有効であることを規定し、ポリシーは発行したHSTSホストのドメインとそのすべてのサブドメインに適用される:
Strict-Transport-Security: max-age=15768000 ; includeSubDomains