1. ホーム
  2. ajax

[解決済み] Access-Control-Allow-Originですべてのドメインを許可する設定にした場合、どのようなセキュリティリスクがありますか?

2022-04-26 12:12:32

質問

最近 Access-Control-Allow-Origin から * サブドメインをまたがるAJAXの呼び出しを行えるようにするためです。これは、セキュリティ上の問題があるような気がします。この設定を維持した場合、私はどのようなリスクにさらされるのでしょうか?

解決方法は?

Access-Control-Allow-Origin: * は、どのようなリソースに追加しても全く問題ありません。 ただし そのリソースは、標準的な認証情報以外のもので保護された個人データを含んでいます。標準的な認証情報は、Cookie、HTTP 基本認証、TLS クライアント証明書です。

例:クッキーで保護されたデータは安全です。

想像してみてください https://example.com/users-private-data は、ユーザーのログイン状態に応じて個人データを公開する可能性があります。この状態は、セッションクッキーを使用します。これは 安全 を追加することで Access-Control-Allow-Origin: * このヘッダは、リクエストがクッキーなしで行われた場合にのみレスポンスへのアクセスを許可し、プライベートデータを取得するためにはクッキーが必要だからです。その結果、プライベートなデータが漏れることはありません。

例:位置情報/IP/内部ネットワークで保護されたデータは安全ではない(残念ながらイントラネットや家電製品に多い)。

想像してみてください https://intranet.example.com/company-private-data しかし、これは会社の無線LANネットワークに接続していないとアクセスできません。これは 安全ではない を追加します。 Access-Control-Allow-Origin: * は、標準的な認証情報以外のもので保護されているため、このリソースに追加することができます。そうしないと、悪質なスクリプトによって、イントラネットへのトンネルとして利用される可能性があります。

経験則

ユーザーがシークレット・ウィンドウでリソースにアクセスした場合、何が見えるかを想像してください。このコンテンツ(ブラウザが受け取ったソースコードも含む)を誰もが見て満足するのであれば、次のように追加するのが安全です。 Access-Control-Allow-Origin: * .