Cross-Origin Resource Sharing

Cross-Origin Resource Sharing (CORS) は、あるサーバー上のスクリプトが別のサーバーに Ajax 要求を送信した場合に発生します。 また、同じサーバーに対して、別のプロトコルまたはポートで要求が送信された場合にも、Cross-Origin Resource Sharing が発生します。

Cross-Origin Resource Sharing は、クロスサイト・リクエスト・フォージェリー攻撃を防止するための「同一オリジン・ポリシー」に違反しています。 /api/* エンドポイントに対する Cookie のグローバルな禁止によってこの攻撃は防止されますが、ブラウザーは依然としてこのポリシーを適用しようと試みます。 この規則はすべてのブラウザーで使用されますが、cURL などの手動要求メカニズムには適用されません。

ユーザーがサーバーに対して要求を送信しようとしていることをブラウザーが検出すると、ブラウザーは最初にプリフライト要求を送信します。 プリフライト要求は、同じ URL に対する OPTION 要求として設定されますが、この要求には Origin ヘッダーも含まれています。 サーバーは、許可されている要求のタイプ、実際の要求の応答内にヘッダーが予期されるかどうか、そのオリジンを許可するかどうかなどの情報を返す必要があります。

プリフライト要求に対する応答の「Access-Control-Allow-Origin」ヘッダーが、プリフライト要求の Origin ヘッダーに一致していない場合、ブラウザーはこれを拒否します。 「Access-Control-Allow-Origin」ヘッダーが一致する場合、ブラウザーはその要求を続行します。 プリフライト要求と実際の要求との間でルールが変更されている場合は、要求に対する応答は「同一オリジン・チェック」に合格する必要があります。

許可されるオリジンの管理

ブラウザーから送信されるオリジン値には、プロトコル名に続けてホスト名とポート番号が格納されています。以下に例を示します。

http://192.0.2.0:8888

ブラウザーから送信された要求をインターセプトして、オリジン値が正しいかどうかを確認することができます。 QRadar® コンソール/opt/qradar/webapps/console/restapi/allowed_origins.list ファイルで、オリジンをホワイトリストに追加できます。 変更は即時に検出されて反映されます。 このファイルには、許可されたオリジンの改行区切りリストが格納されています。 各項目は、プリフライト要求時にブラウザーから送信された Origin ヘッダーと比較して検証されます。 項目がオリジンに一致する場合 (または項目が「*」の場合)、ブラウザーは Cross-Origin Resource Sharing 要求を行うことができます。

一般的なブラウザー規則では、ホワイトリストに「*」を追加して file:// からスクリプトを開始するときに、 null を起点として送信します。 この方法は、すべてのオリジンが許可されるため、適切な方法ではありません。