web-dev-qa-db-ja.com

CORSにすべてのドメインを追加することによるセキュリティへの影響(つまり、Access-Control-Allow-Origin:*)

次の2つのHTTP応答 [〜#〜] cors [〜#〜] ヘッダーを設定した場合のセキュリティへの影響について知りたいです。

Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: false

私が目にする唯一のセキュリティ問題は、DoS攻撃とCSRF攻撃です。
CSRF攻撃は、IMG要素とFORM要素ですでに達成されています。 CORSに関連するDoS攻撃は、リファラーヘッダーに対する要求をブロックすることで克服できます。

そのため、特定のドメインセットにのみ「CORSアクセス」を付与する必要があると言った理由がわかりません。


すべてのドメインに「CORSアクセス」を追加すると、セキュリティにどのような影響がありますか?

3
brillout

Access-Control-Allow-Originの意味は、CSRFを単に防止することとは異なります。これは、要求しているスクリプトが要求のresultを取得できないようにします。

同じことがAccess-Control-Allow-Credentialsにも当てはまります。このヘッダーを使用すると、スクリプトは資格情報を含む要求の応答を取得できます。 *を送信する場合、Access-Control-Allow-OriginにワイルドカードAccess-Control-Allow-Credentials: trueを使用できないことに注意してください。 ただし、Originの値のみを使用できます。リクエストヘッダー。

その意味は次のとおりです。サイトのコンテンツを含むスクリプトは何ができるでしょうか。

  • ユーザーがログインしている場合、スクリプトはユーザーが表示できるすべてのサイトを取得し、それを解析して、(おそらく機密の)データを送信元に送信できます。
  • フォーム/リンクに何らかのCSRFトークンを含めると、それらはトークンの値を取得し、その有効なトークンを使用してリクエストを実行できます。
  • ユーザーに代わってページを操作できます。

XSSの場合は、XSSの意味によって異なります。 XSSで他のスクリプトがユーザーのbealfに作用することを意味している場合は、既に許可しています。

したがって、リモートサイトに追加すると、Originサイトにいくつかの情報(ロードする時間など)のみが表示されますが、情報漏えい(特にログインしているユーザーの場合)ははるかに大きくなる可能性があります。

補足:リクエストをブロックするには、Originヘッダーがある場合はそれを使用します。

2
Johannes Kuhn