12. User Agent Implementation Advice (ユーザーエージェント実装のアドバイス)
本セクションは非規範的である。
ユーザーとWebサイトにより効果的な保護を提供し、UAがキャッシュするHSTSポリシーを管理するための制御を提供するために、UA実装者は以下のような機能を含めることを検討すべきである:
12.1. No User Recourse (ユーザー救済手段なし)
セクション8.4 ("Errors in Secure Transport Establishment") に従って、任意の警告またはエラーで失敗したセキュア接続確立は、"ユーザー救済手段なし (no user recourse)"で完了すべきである。これは、ユーザーに続行を選択させるダイアログを提示すべきではないことを意味する。代わりに、サーバーエラー処理と同様に、ターゲットWebアプリケーションとの対話に関してユーザーができることは何もなく、待機して再試行するしかない。
基本的に、"任意の警告またはエラー"は、UA実装がユーザーに接続確立が完全に正しくないことを通知する原因となるものすべてを意味する。
これを行わない場合、つまりユーザー救済手段を許可する場合、たとえば"警告/エラーダイアログをクリックスルーする"ことは、中間者攻撃のレシピである。Webアプリケーシ��ンがHSTSポリシーを発行する場合、それは暗黙的に"ユーザー救済手段なし"アプローチを選択しており、つまりすべての証明書エラーまたは警告が接続終了につながり、ユーザーを"だまして"誤った決定をさせて自分自身を危険にさらす機会はない。
12.2. User-Declared HSTS Policy (ユーザー宣言HSTSポリシー)
ユーザー宣言HSTSポリシーは、ユーザーが特定のドメイン名がHSTSホストを表すことを明示的に宣言できる機能であり、それによって実際の相互作用の前に既知のHSTSホストとしてシードされる。これは、セクション14.6 ("Bootstrap MITM Vulnerability") で議論されているブートストラップMITM脆弱性を防ぐのに役立つ。
注 (NOTE): そのような機能は、サイトごとに正しく行うことは困難である。[ForceHTTPS] セクション5.5の"リライトルール"に関する議論を参照。たとえば、任意のWebサイトは"https"スキームでそのすべてのURIを具体化しない可能性があるため、UAがそのようなURIのみを使用してサイトに排他的にアクセスしようとすると、"壊れる"可能性がある。また、この機能は"HSTSプリロードリスト"機能を補完するが、独立していることに注意 (セクション12.3を参照)。
12.3. HSTS Pre-Loaded List (HSTSプリロードリスト)
HSTSプリロードリストは、Webサイト管理者がUAベンダーに、ルートCA証明書がブラウザに"出荷時"に埋め込まれるのと同様の方法で、サイトのHSTSポリシーを事前構成させることができる施設である -- いわゆる"プリロードリスト"。これは、ブートストラップMITM脆弱性 (セクション14.6) を防ぐのに役立つ。
注 (NOTE): そのような施設は、"ユーザー宣言HSTSポリシー"機能を補完する (セクション12.2)。
12.4. Disallow Mixed Security Context Loads (混合セキュリティコンテキストロードの禁止)
"混合セキュリティコンテキスト (mixed security context)"ロードは、UAがセキュアなトランスポートを介して取得したWebアプリケーションリソースが、その後セキュアなトランスポートを使用せずに1つ以上の他のリソースの取得につながる場合に発生する。これは通常、"混合コンテンツ (mixed content)"ロードとも呼ばれる ([W3C.REC-wsc-ui-20100812] セクション5.3 ("Mixed Content") を参照)。
注 (NOTE): UA実装間で動作の一貫性を提供するために、混合セキュリティコンテキストの概念にはさらなる標準化作業が必要であろう。たとえば、用語をより明確に定義し、それに関連する特定の動作を定義する。
12.5. HSTS Policy Deletion (HSTSポリシーの削除)
HSTSポリシーの削除は、HSTSホストごとにUAがキャッシュしたHSTSポリシーを削除する機能である。
注 (NOTE): そのような機能を追加することは、ユーザーインターフェースとセキュリティの意味の両方で非常に慎重に行うべきである。既知のHSTSホストのキャッシュエントリを削除することは、非常に慎重で熟考された行動であるべきである -- それはユーザーが日常的に行うことに慣れているものであってはならない: たとえば、単に仕事を完了するために"クリックスルー"するようなもの。さらに、実装は、攻撃者がUA内にコード (例えば、ECMAscript) を注入して、UAの既知のHSTSホストキャッシュからエントリを静かにプログラム的に削除できるようにすることを防ぐ必要がある。