1. ホーム
  2. jquery

[解決済み】X-Requested-Withヘッダーのポイントは何でしょうか?

2022-04-04 16:15:50

質問

JQueryなどのフレームワークでは、以下のようなヘッダが追加されます。

X-Requested-With: XMLHttpRequest

なぜこれが必要なのでしょうか?なぜサーバーは AJAX リクエストを通常のリクエストとは異なる方法で扱いたいのでしょうか?

アップデイト : このヘッダーを使った実例を見つけました。 https://core.spreedly.com/manual/payment-methods/adding-with-js . ペイメント・プロセッサーがAJAXなしで要求された場合、それが終わると元のウェブサイトにリダイレクトされます。AJAX付きで要求された場合は、リダイレクトは行われません。

どのように解決するのですか?

セキュリティのためです。 CSRF このヘッダは、サーバーの同意なしに AJAX リクエストのクロスドメインに CORS .

オリジン間で許可されるヘッダは以下のもののみです。

  • 受け入れる
  • 受け入れ言語
  • コンテンツ言語
  • ラストイベント-ID
  • コンテンツタイプ

それ以外の場合、CORS をサポートするブラウザで "プリフライト" リクエストが発行されるようになります。

CORSがなければ X-Requested-With をクロスドメインXHRリクエストに追加します。

サーバーがこのヘッダーの存在を確認した場合、そのリクエストはJavaScriptでユーザーの代わりにリクエストを行おうとする攻撃者のドメインから開始されたものではないことを認識します。これはまた、リクエストが通常の HTML フォームから POST されたものでないことも確認します。この場合、トークンを使用せずにクロスドメインでないことを確認するのは困難です (しかし をチェックすることで Origin ヘッダー は、サポートされているブラウザのオプションになる可能性があります。 古いブラウザを脆弱なままにしておくことになりますが .)

新たなFlashバイパス発見

を希望する場合があります。 というトークンと組み合わせる。 OSX の Safari で Flash が動作しているためです。 は、リダイレクトステップがある場合、このヘッダを設定することができます。 . 次のように表示されます。 は、Chromeでも動作しました。 が、現在では改善されています。 詳細はこちら 影響を受けるバージョンも異なります。

OWASPは、OriginとRefererのチェックと組み合わせることを推奨しています。 :

<ブロッククオート

の4.3節で、この防御手法について具体的に説明しています。 クロスサイトリクエストフォージェリに対する堅牢な防御方法。を回避することができます。 このFlashを使った防御は、2008年の時点で文書化されており、また最近では 最近では2015年にMathias KarlssonがVimeoのCSRFの欠陥を突いています。 しかし、私たちは、Flashの攻撃は、OriginまたはOriginを偽装することができないと信じています。 Refererヘッダをチェックし、その両方をチェックすることで、この の組み合わせで、Flash バイパス CSRF 攻撃を防ぐことができるはずです。(注意。 もし、この説を肯定または否定できる方がいらっしゃいましたら、ぜひご一報ください。 この記事を更新することができます)

しかし、すでに述べた理由により、Originをチェックするのは厄介なことです。

更新情報

について、より深く掘り下げたブログ記事を書きました。 CORS、CSRF、X-Requested-Withはこちら .