1

何かが足りないことはわかっていますが、理解を助けてください。次の状況を考えてみてください。goodbank.com という Web サイトを持っています。URL http://goodbank.com/transfer/は、別の口座に送金するためのフォームを含む HTML ページを GET で提供します。フォームには、CSRF 攻撃を防ぐためのランダム トークンがあります。サーバーでは、POST でトークンの有効性がチェックされ、対応するコントローラーは認証されたセッションのみを許可します。

私のブラウザで、goodbank.com/ にログインするとします。別のタブで、robgoodbank.com にアクセスします。提供されるページの一部として、有効なフォームを取得するために、goodbank.com/transfer/ への AJAX リクエストを実行するための JavaScript が含まれています。次に、フォームの他のフィールドに入力し、POST を実行します。私のアカウントは一掃されました:(

既存の保護スキームは、そのような攻撃からどのように保護しますか?

前もって感謝します。

4

1 に答える 1

1

サーバーがCross Origin Resource Sharingを許可しない限り、ブラウザはXMLHttpRequest. リンクに従って、リクエストの発信元のドメインを含むヘッダーをXMLHttpRequest送信します。サーバーがそのドメインのワイルドカードを含むOrigin応答を返さない場合、ブラウザーは要求を拒否します。Access-Control-Allow-Origin実際には、Access-Control-許可されるメソッドなどを含むアクセスを制御するためのヘッダーがいくつかあります。

保護を強化するために、サーバーOriginは存在するかどうかとRefererHTTP ヘッダー (この例では " http://robgoodbank.com ") を確認する必要があります。また、要求を拒否することもできます。

これらは決して万能ではありませんが、追加の保護層を提供します。リファラーを偽装するメカニズム (拡張機能など) がありますが、ブラウザーが何らかの方法で侵害されていない限り、それらはユーザーによって使用されていたはずです。ブラウザが侵害された場合、彼らはさらに多くの問題に直面します...

于 2014-02-12T15:36:30.740 に答える