web-dev-qa-db-ja.com

AJAXリクエスト(Same Origin Policy))の反CSRFトークンの代替

PHP完全にAJAX(jQuery経由)に基づくWebサイト)に取り組んでいます。これは、すべてのリクエストがAJAXによって行われる単一のページです。

CSRFに対する保護に関連して、私が行うすべての要求に手動でトークンを含める必要があるという問題に遭遇しました。これは非常に面倒で不快です。トークンの代替ソリューションを探して、SOP(Same Origin Policy)との関連でAJAXリクエストに関して説明します。よく理解していれば、xmlhttprequestは異なるドメイン間で許可されます(これが有効になっていないCORSでない場合)。

したがって、この場合、リクエストのオリジン(HTTP_Originを介して)とヘッダーX-Requested-With(リクエストがAJAXリクエスト)であることを確認するため)を確認すると、 CSRF攻撃を防ぐのに十分である、つまり、上記の条件を考慮して本当に必要なトークンがあるかどうかを知りたかった。

お時間をいただきありがとうございます。

8
cooper

はい、 X-Requested-With などのカスタムヘッダーを使用して、CSRFからのAJAXリクエストを保護できます。

サーバーでCORSが有効になっていない場合、カスタマーヘッダーはクロスドメインで使用できません。 Originヘッダーを使用することもできますが、 これのロジックは単純ではありません

defence in depth の精神でカスタムヘッダーにセキュリティを追加したい場合、 ヘッダーへのトークン を追加できます。ただし、これは避けたい退屈な作業であると言っているので、カスタムヘッダーをチェックするだけで、このヘッダーを設定できるFlashやSilverlightなどのブラウザープラグインの将来の脆弱性を十分に排除できます。

7
SilverlightFox