[解決済み】X-Requested-Withヘッダーのポイントは何でしょうか?
質問
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はこちら .
関連
-
[解決済み] jQueryで文字色を変更するにはどうすればよいですか?
-
[解決済み] jqueryでドロップダウンボックスを有効化/無効化する
-
[解決済み] Access-Control-Allow-Originヘッダーはどのように機能するのですか?
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み] セレクタの子を取得する方法は?
-
[解決済み] cURL呼び出しによるHTTPリクエストを使用してヘッダーを送信する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Bootstrap - Uncaught TypeError: 未定義のプロパティ 'fn' を読み取れない。
-
[解決済み】カルーセルで画像を中央に配置する方法
-
[解決済み】Ajaxクロスオリジンリクエストがブロックされました。同一生成元ポリシーがリモートリソースの読み取りを不許可にする
-
[解決済み] Jquery.comのサイトのソースファイルはどこにあるのでしょうか?ダウンロードのリンクがないのですが
-
[解決済み] jQueryは、すべてのテキストフィールドの値の合計を計算する
-
[解決済み] jQuery.whenの理解
-
[解決済み] cssで自動的にシャインエフェクト
-
[解決済み] jQuery .validate() submitHandler が起動しない
-
[解決済み] なぜCSRF防止トークンをクッキーに入れるのが一般的なのですか?
-
[解決済み】Railsの認証トークンを理解する