1. インフラストラクチャ

クロスサイト リクエスト フォージェリ

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

クロスサイト リクエスト フォージェリ (CSRF) とは、ユーザーをだまして、現在認証されている Web アプリケーション上で意図しないアクションを実行させる攻撃です。

説明

CSRF は、被害者をだまして悪意のある要求を送信させる攻撃です。被害者の ID と権限を継承し、被害者になりすまして望ましくない機能を実行します。ほとんどのサイトでは、ブラウザーの要求には、ユーザーのセッション Cookie、IP アドレス、Windows ドメインの資格情報など、ウェブサイトに関連付けられている資格情報が自動的に含められます。したがって、現在ユーザーがサイトに対して認証されている場合、ハッカーによって送信された偽造された要求と、被害者によって送信された正当な要求をサイトが区別することはできません。

CSRF 攻撃は、被害者の電子メール アドレスやパスワードの変更、何かの購入など、サーバー側で状態を変化させる機能を標的とします。応答を受信するのは攻撃者ではなく被害者であるため、被害者にデータの取得を強制しても、攻撃者にはメリットがありません。そのため、CSRF 攻撃は、状態を変更する要求を標的にします。

CSRF 攻撃を回避する方法

  • CSRF 攻撃に対する次の 2 層の保護が実装されています。
    • プレフライト要求
    • 二重識別子

プレフライト要求

オリジン間リソース共有 (CORS) の W3C 仕様に準拠するすべてのブラウザーは、API に対するプレフライト要求を作成します。これは、OPTIONS リクエストとも呼ばれます。

  • アプリケーション/JSON とのみ通信します。
  • XMLHTTPRequestwithCredentials フラグが TRUE に設定されている必要があります。XMLHttpRequest.withCredentials プロパティはブール値であり、Cookie、認証ヘッダー、TLS クライアント証明書などの資格情報を使用してクロスサイトのアクセス制御要求を行う必要があるかどうかを示します。

プレフライト要求を実行するブラウザーの目的は、外部サイトがその API を使用できるかどうかを確認することです。この要求は基本的に、Access-Control-Allow-Origin または要求の送信元ドメインの値が Access-Control-Allow-Origin: * かどうかを確認します。

この応答は、任意のオリジンからのコードがリソースにアクセスすることを許可するようにブラウザーに指示します。そうでない場合、要求は禁止されます。

大多数のブラウザーは W3C 規則に従っています。標準に準拠していないブラウザー (Internet Explorer および Safari の一部のビルド) の場合、防御の 2 番目のレイヤーがインストールされます。

二重識別子

Web サイトは、自身の Cookie のみを読み取ることができます。当社では、ページが更新されるたびにサーバーでトークンを作成することで、この機能を利用しています。このトークンは Cookie として設定され、ユーザーが実際のサイトにいる場合にのみ抽出され、サイト自体の外部では複製できない要求とともに送信されます。

この記事を改善するための提案がある場合は、 お知らせください!