V50: Web フロントエンドセキュリティ
管理目標
このカテゴリはアプリケーションの Web フロントエンドを介して実行される攻撃から保護する要件に焦点を当てています。これらの要件はマシン間ソリューションには関係ありません。
V50.1 サイト分離アーキテクチャ
このセクションではブラウザが提供する同一オリジン分離の利点を活用する方法についてのガイダンスを提供します。
50.1.1
[追加, 3.4.5 を廃止] あるオリジンでロードされたドキュメントやスクリプトが別のオリジンのリソースとやり取りする方法や、クッキーのホスト名制限など、同一オリジンポリシーによって提供される制限を活用するために、別のアプリケーションは異なるホスト名でホストされている。
2
v5.0.be-50.1.1
V50.6 意図しないコンテンツ解釈
コンテンツや機能を不適切なコンテンツでレンダリングすると、さまざまなセキュリティ問題につながる可能性があります。
50.6.1
[修正, 12.5.2 から移動, 1.12.2, 14.4.2 からマージ] ブラウザが不正なコンテキスト (API、ユーザがアップロードしたファイル、または他のリソースが直接リクエストされる場合など) で HTTP レスポンスのコンテンツや機能をレンダリングすることを防ぐために、セキュリティ制御が行われている。可能な制御には、HTTP リクエストヘッダフィールド (Sec-Fetch-* など) が正しいコンテキストであることを示さない限りコンテンツを提供しないこと、Content-Security-Policy ヘッダフィールドの sandbox ディレクティブを使用するか、Content-Disposition ヘッダフィールドの attachment ディポジションタイプを使用することなどがある。
1
v5.0.be-50.6.1
50.6.2
[追加, 5.3.3 から分割] HTML としてレンダリングするのではなく、テキストとして表示することを意図したコンテンツは、HTML や JavaScript などのコンテンツの意図しない実行を防ぐために、安全なレンダリング関数 (createTextNode や textContent など) を使用して処理している。
1
v5.0.be-50.6.2
V50.2 クッキーセットアップ
このセクションでは、機密性の高いクッキーが盗まれたり不適切に使用されるリスクを軽減するために、機密性の高いクッキーを安全に構成する方法についての要件を提供します。
50.2.1
[修正, 3.4.1 から移動] クッキーには 'Secure' 属性が設定されており、クッキー名に '__Host-' プレフィックスが使用されていない場合は、クッキー名に '__Secure-' プレフィックスを使用しなければならない。
1
v5.0.be-50.2.1
50.2.3
[修正, 3.4.3 から移動, レベル L1 > L2] 各クッキーの 'SameSite' 属性値はクッキーの目的に応じて設定され、一般にクロスサイトリクエストフォージェリ (CSRF) として知られる、ユーザーインタフェースのリドレス攻撃やブラウザベースのリクエストフォージェリ攻撃への露出を制限している。
2
v5.0.be-50.2.3
50.2.4
[修正, 3.4.4 から移動, レベル L1 > L2] クッキーは、明示的に他のホストと共有するように設計されていない限り、クッキー名に '__Host-' プレフィックスを付けている。
2
v5.0.be-50.2.4
50.2.2
[修正, 3.4.2 から移動, レベル L1 > L2] クッキーの値がクライアントサイドスクリプトからアクセスされることを意図していない場合 (セッショントークンなど)、クッキーは 'HttpOnly' 属性が設定されていなければならず、同じ値 (セッショントークンなど) は 'Set-Cookie' ヘッダフィールドを介してのみクライアントに転送されなければならない。
2
v5.0.be-50.2.2
50.2.5
[追加] アプリケーションがクッキーを書き込む際、クッキー名と値を合わせた長さは 4096 バイトを超えない。大きすぎるクッキーはブラウザに保存されないため、リクエストとともに送信されず、ユーザはそのクッキーに依存するアプリケーション機能を使用できなくなる。
3
v5.0.be-50.2.5
V50.3 ブラウザのセキュリティメカニズムヘッダ
このセクションでは、機密データを開示する可能性のあるさまざまな種類の攻撃を防ぐために、HTTP レスポンスに設定する必要があるセキュリティヘッダを示します。
50.3.3
[修正, 14.4.5 から移動] HTTP Strict Transport Security (HSTS) ポリシーを適用するために、Strict-Transport-Security ヘッダフィールドがすべてのレスポンスに含まれている。少なくとも 1 年間の最大有効期間を定義しなければならず、L2 以上では、ポリシーをすべてのサブドメインにも適用しなければならない。
1
v5.0.be-50.3.3
50.3.6
[追加, 14.5.3 から分割] クロスオリジンリソース共有 (CORS) Access-Control-Allow-Origin ヘッダフィールドが信頼できるオリジンの厳密な許可リストに対して検証されている。 "Access-Control-Allow-Origin: *" を使用する必要がある場合、レスポンスに機密情報が含まれていない。
1
v5.0.be-50.3.6
50.3.1
[修正, 14.4.3 から移動, レベル L1 > L2] すべての HTTP レスポンスには Content-Security-Policy ヘッダフィールドを含み、悪意のある JavaScript のリスクを軽減している。ディレクティブ object-src 'none' および base-uri 'none' を定義しなければならない。L3 アプリケーションでは、ナンスまたはハッシュを用いたレスポンスごとのポリシーを定義しなければならない。
2
v5.0.be-50.3.1
50.3.2
[文法, 14.4.4 から移動] すべてのレスポンスに X-Content-Type-Options: nosniff ヘッダフィールドが含まれている。
2
v5.0.be-50.3.2
50.3.4
[修正, 14.4.6 から移動] 適切な Referrer-Policy ヘッダフィールドが含まれており、URL 内の機密情報が Referer ヘッダを介して信頼できないパーティに公開されることを防いでいる。
2
v5.0.be-50.3.4
50.3.5
[修正, 14.4.7 から移動] Web アプリケーションはすべての HTTP レスポンスに対して Content-Security-Policy ヘッダフィールドの frame-ancestors ディレクティブを使用して、デフォルトでは埋め込むことができないようにし、特定のリソースの埋め込みは必要な場合にのみ許可されるようにしている。X-Frame-Options ヘッダフィールドは、ブラウザによってサポートされているが、廃止されており、信頼できないことに注意する。
2
v5.0.be-50.3.5
50.3.7
[追加] Content-Security-Policy ヘッダフィールドが違反を報告する場所を指定している。
3
v5.0.be-50.3.7
V50.4 ブラウザのオリジン分離
サーバサイドで機密機能へのリクエストを受け入れる場合、それがアプリケーション自体あるいは信頼できるパーティによって開始され、攻撃者によって偽造されていないことを確認する必要があります。
このコンテキストにおける機密機能には、認証されたユーザと認証されていないユーザのフォーム投稿の受け入れ (認証リクエストなど)、状態変更操作、リソース要求機能 (データエクスポートなど) があります。
ここでの重要な保護は JavaScript の Same Origin Policy やクッキーの SameSite ロジックなどのブラウザセキュリティポリシーです。もう一つの一般的な保護は CORS プリフライトメカニズムです。このメカニズムは、異なるオリジンから呼び出されるように設計されたエンドポイントにとって重要ですが、異なるオリジンから呼び出されるように設計されていないエンドポイントにとっても、リクエストフォージェリ防止メカニズムとして役立ちます。
50.4.1
[修正, 4.2.2 から移動, 13.2.3 をカバー] 機密機能への CORS セーフリストリクエストをチェックして、アプリケーション自体から発信したものであることを確認している。これはフォージェリ防止トークンを使用して検証するか、CORS セーフリストリクエストヘッダではない追加の HTTP ヘッダを要求することで行われる。これは、一般にクロスサイトリクエストフォージェリ (CSRF) と呼ばれる、ブラウザベースのリクエストフォージェリ攻撃を防御するためのものである。
1
v5.0.be-50.4.1
50.4.3
[修正, 13.2.5 から移動, 14.5.3 から分割, 13.2.3 をカバー] アプリケーションが CORS プリフライトメカニズムに依存して、機密機能の許可されていないクロスオリジン使用を防止している場合、CORS セーフリストリクエストで機能を呼び出すことはできない。これは 'Origin' および 'Content-Type' リクエストヘッダの値をチェックするか、CORS セーフリストではない追加のヘッダフィールドを使用する必要があるかもしれない。
1
v5.0.be-50.4.3
50.4.4
[修正, 13.2.1 から移動] 機密機能の呼び出しは POST, PUT, PATCH, DELETE などの適切な HTTP メソッドを使用し、HEAD, OPTIONS, GET などの HTTP 仕様で「安全」と定義されているメソッドを使用しない。あるいは、Sec-Fetch-* リクエストヘッダフィールドの厳密なバリデーションを使用して、不適切なクロスオリジンコール、ナビゲーションリクエスト、期待されていないリソースロード (画像ソースなど) からリクエストが発生していないことを確保している。これはアプリケーションが URL パラメータとメッセージボディパラメータを区別しない場合に特に重要である。
1
v5.0.be-50.4.4
1.50.1
[追加] アプリケーションドキュメントには、アプリケーションを使用するブラウザがサポートする必要がある想定されるセキュリティ機能 (HTTPS、HTTP Strict Transport Security (HSTS)、コンテンツセキュリティポリシー (CSP)、その他の関連する HTTP セキュリティメカニズムなど) を記載している。これらの機能の一部が利用できない場合にアプリケーションがどのように動作しなければならないか (ユーザへの警告やアクセスのブロックなど) も定義する必要がある。
3
v5.0.be-1.50.1
50.4.2
[追加] メッセージのオリジンが信頼できない場合、またはメッセージの構文が無効な場合、postMessage インタフェースによって受信したメッセージを破棄している。
2
v5.0.be-50.4.2
50.5.1
[追加] クロスサイトスクリプトインクルージョン (XSSI) 攻撃を避けるために、JSONP 機能はアプリケーションのどの部分でも有効になっていない。
3
v5.0.be-50.5.1
50.5.2
[追加] クロスサイトスクリプトインクルージョン (XSSI) 攻撃を防ぐために、認可が必要なデータは JavaScript ファイルなどのスクリプトリソースレスポンスには含まれていない。
3
v5.0.be-50.5.2
V50.7 外部リソース完全性
このセクションではサードパーティのサイトでコンテンツを安全にホストするためのガイダンスを提供します。
50.7.1
[修正, 14.2.3 から移動] JavaScript ライブラリ、CSS、Web フォントなどのクライアントサイド資産がコンテンツ配信ネットワーク (Content Delivery Network, CDN) や外部プロバイダで外部的にホストされている場合、サブリソース完全性 (Subresource Integrity, SRI) を使用して資産の完全性を確認している。
3
v5.0.be-50.7.1
V50.8 ブラウザのセキュリティに関するその他の考慮事項
このセクションではクライアントサイドのブラウザセキュリティに必要となるその他のさまざまなセキュリティコントロールや最新のブラウザセキュリティ機能を含みます。
50.8.2
[修正, 1.14.6 から移動] アプリケーションは依然としてサポートされており安全であると考えられているクライアント側テクノロジのみを使用している。この要件を満たさないテクノロジの例としては NSAPI プラグイン、Flash、Shockwave、ActiveX、Silverlight、NACL、クライアントサイド Java アプレットなどがある。
2
v5.0.be-50.8.2
50.8.5
[追加, 5.1.5 から分割] アプリケーションは、宛先が許可リストに記載されているもののみ、アプリケーション URL から直接別の URL にユーザーを自動的にリダイレクトしている。
2
v5.0.be-50.8.5
50.8.4
[追加] アプリケーションのトップレベルドメイン (例: site.tld) が HTTP Strict Transport Security (HSTS) のパブリックプリロードリストに追加されている。これにより、アプリケーションの TLS の使用が、Strict-Transport-Security レスポンスヘッダフィールドのみに依存するのではなく、メインブラウザに直接組み込まれるようになる。
3
v5.0.be-50.8.4
50.8.1
[追加, 5.1.5 から分割] ユーザがアプリケーションの制御外の URL にリダイレクトされる場合、アプリケーションはナビゲーションをキャンセルするオプションとともに通知を表示している。
3
v5.0.be-50.8.1
50.8.3
[追加] アプリケーションへのアクセスに使用されるブラウザが、想定されるセキュリティ機能をサポートしていない場合、アプリケーションはドキュメントに記載されているとおりに動作する (ユーザへの警告やアクセスのブロックなど)。
3
v5.0.be-50.8.3
参考情報
詳しくは以下の情報を参照してください。
Last updated
Was this helpful?