2017-07-11 17 views
3

私は、cors要求のカスタムヘッダーのデフォルトブロッキングが何らかの攻撃を防ぐことを前提としています。CORSはデフォルトでカスタムヘッダーをブロックするのはなぜですか?

はその仮定が正しいですか?もしそうなら、攻撃は何ですか? https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS CORSで

から


サーバは、これらのパラメータを使用して要求 を送信するために許容可能であるか否かを応答することができる ように、OPTIONSメソッドでプリフライト要求は、送信されます。アクセス制御リクエスト法ヘッダ は、実際の要求が送信されるとき、それはPOSTリクエストメソッドで送信されることをプリフライトリクエストの一部としてサーバに通知します。

+0

特定のリソースへのアクセスを制限するために、その唯一。あなたのウェブサイト/モバイルアプリケーションだけではなく、すべての人にAPIを提供したくない場合もあります。 –

+0

@AndreiAlexandruブラウザがカスタムヘッダーを送信しないようにすることはできますが、他の人が手動で行うことを防ぐことはできません。 – Bergi

答えて

4

ブラウザのクロスオリジン制限は、サーバーが、スクリプト、画像、スクリプト、およびスタイルシートの要求を既に許可しているものよりも既定でスクリプトベースのクロスオリジンXHR /フェッチ要求が何かを行うことを許可しませんimg,script、およびlink要素を使用します。あなたがimgscript、または起点Bから画像、スクリプト、またはスタイルシートを埋め込むlink要素を入れ原点Aでの文書やアプリケーションのためのHTMLマークアップでは、あなたは上のカスタムヘッダーを設定することができる方法はありません

スクリプト、またはスタイルシートの原点からの要求。

したがって、スクリプトによるクロスオリジンXHR /フェッチ要求のデフォルトのブラウザ動作は、img/script /から開始された同じ動作/制限に一致するように設計されています。 linkマークアップ。

ここでの作業の原則は、サーバー側のコードで誰かが行った仮定を破ってはならないということです。カスタムヘッダーを含むブラウザーで実行されているドキュメントやアプリケーションからの要求を受信しない、 img/script/linkを使用してください。

しかし、CORSプロトコルの目的は、サーバがオプトインしているデフォルトの動作よりも緩いものにできるようにすることです。そこで彼らは、リクエストヘッダのためにあまり厳密行動に選ぶことができ、特定の方法は、彼らはスクリプトクロスオリジンXHRが/へのリクエストを取得できるようにしたい正確に何リクエストヘッダをAccess-Control-Allow-Headersを送信するために選択し、テーラー/チューニング/コントロールにそれを使用することができています作る。

Access-Control-Allow-Headersを送信することでオプトインしない場合、ブラウザはフロントエンドJavaScriptコードからのスクリプトベースのクロスオリジンXHR /フェッチ要求に驚く/予期せぬことをするつもりはないと確信することができます彼らはオプト・インしていません。

明らかに、CORSではデフォルトの制限が課せられていません。代わりに、これらの制限は、ブラウザーが従うデフォルトの同じ起点ポリシーの一部であり、https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policyhttps://en.wikipedia.org/wiki/Same-origin_policyのような場所で文書化されています。だから、CORSは、ブラウザに特定のリソースに対する厳しい制限を適用しないように要求するときに、サーバーが選択できるようにする手段に過ぎません。

関連する問題