パブリックバケットのS3CORSポリシー

2
yuranos 2019-04-13 17:45.

簡単そうに見えますが、何が足りないのかわかりません。Webサイトからフェッチするjsスクリプトを含むパブリックバケットがあります。OriginS3にヘッダーを送信しないことに気付きました。ヘッダーは必須ではなく、CORS構成がなくてもすべてが機能します。

さらに、そのGET呼び出しにOriginヘッダーを手動で追加し、次の方法でGETとドメインを明示的に禁止した後でも。

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>http://www.nonexistingdomain.com</AllowedOrigin>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

私はまだコンテンツを取得できます。何が起きてる?

3 answers

2
yuranos 2019-04-14 04:09.

わかりました。Quentinとの会話の後、CORSがどのように機能するかをどこで誤解しているのか理解できたと思います。Javaの世界では、Originが一致しない場合に実際にリクエストを拒否することは非常に一般的な方法です。これが言及されている別のスレッドです。Springを例にとると(Javaの世界では事実上の標準です)、CORSフィルターを追加すると次のようになります。

    String allowOrigin = checkOrigin(config, requestOrigin);
    ...

    if (allowOrigin == null) {
        logger.debug("Reject: '" + requestOrigin + "' origin is not allowed");
        rejectRequest(response);
        return false;
    }

どこ:

/**
 * Invoked when one of the CORS checks failed.
 */
protected void rejectRequest(ServerHttpResponse response) {
    response.setStatusCode(HttpStatus.FORBIDDEN);
}

ここでコードを見つけることができます。

しかし、驚いたことに、他のスタックやサーバー側のテクノロジーではそれほど一般的な方法ではありません。もう1つの一般的なアプローチは、CORS構成をブラウザーに送信し、決定をブラウザーに任せることです。

S3はさらに注意が必要です。バケットのCORSルールがCORS対応のリクエスト(Originヘッダーのリクエスト)と一致する場合にのみ、CORSレスポンスヘッダーを送信します。そうしないと、CORS応答ヘッダーがありません。

1
Quentin 2019-04-14 01:28.

同一生成元ポリシーは、あるWebサイトで実行されているJavaScriptが別のWebサイトからデータを読み取れないようにするブラウザーによって適用される機能です。(これにより、JavaScriptを使用してランダムなWebサイトが停止し、ブラウザーを使用して企業のファイアウォールをスキップしてイントラネットにアクセスしたり、Cookieを使用してGMailを読み取ったりします)。

CORSを使用すると、Webサイトは同一生成元ポリシーを緩和して、他のWebサイトがその方法でデータを読み取ることができるようになります。

CORSは認証/承認ではありません。パブリックバケットはパブリックです。

JavaScriptを使用してバケットからデータ読み取るのではなく、バケットから直接JSをロードしています。

0
sun_jara 2019-04-14 15:40.

問題を分解して、CORSの基本を理解してみましょう。

Cross-Origin Request&CORSとは何ですか?

クロスオリジンリクエスト:オリジン外のリソース(画像やフォントなど)のリクエストは、クロスオリジンリクエストと呼ばれます。

CORSは、別のオリジンから保護されたリソースをリクエストする場合に役立ちます。

クロスオリジンリクエスト共有:オリジン外の保護されたリソース(画像、フォント、XHRリクエストなど)のリクエストは、クロスオリジンリクエストと呼ばれます。

認証/承認トークンを使用してリソースを保護できるのに、なぜCORSが必要なのですか?

CORSは最初の防衛線です。クライアント(ブラウザなど)とサーバーの両方がCORSに対応している場合、クライアントは、サーバーの指示に従って、特定のオリジンからサーバーへのリクエストのみを許可します。

デフォルトでは、ブラウザは、ブラウザの構築に関するガイドラインに従って、同一生成元ポリシーのセキュリティメカニズムを実装することになっています。最近のほとんどすべてのブラウザーは、オリジンが同じである場合にサーバーへの要求を許可するようにブラウザーに指示する同一生成元ポリシーを実装しています。

同一生成元ポリシーはブラウザのセキュリティメカニズムです。詳細については、こちらをご覧ください。これは、ブラウザのこの機能のため、指定元とソース元が異なる場合、ブラウザはすべてのリクエストをブロックします。(サーバーはこれが起こっていることにさえ気づいていません、うわー!)

より単純なユースケースでは、アセット(js、CSS、画像、フォント)、XHRリソースに同じオリジンでアクセスできる場合、CORSについて心配する必要はありません。

アセットが別のオリジンでホストされている場合、またはXHRリソースがソースとは異なるドメインのサーバーでホストされている場合、ブラウザーはデフォルトでクロスオリジンのリクエストを拒否しません。適切なCORS要求および応答ヘッダーがある場合にのみ、ブラウザーはクロスオリジン要求を行うことができます。

リクエストヘッダーとレスポンスヘッダーを見てみましょう。

リクエストヘッダー

  • 原点
  • Access-Control-Request-Method
  • Access-Control-Request-Headers

応答ヘッダー

  • Access-Control-Allow-Origin
  • Access-Control-Allow-Credentials
  • Access-Control-Expose-Headers
  • アクセス制御-最大年齢
  • Access-Control-Allow-Methods Access-Control-Allow-Headers

CORSを設定するにはOrigin、とAccess-Control-Allow-Originヘッダーが必要です。ブラウザはOriginすべてのリクエストにヘッダーを自動的に追加するため、開発者はAccess-Control-Allow-Originレスポンスヘッダーのみを設定する必要があります。

特定のドメインからのみリソースへのアクセスを保護するために、S3にはCORSルールを構成するオプションがあります。Access-Control-Allow-Originヘッダーの値が*すべてのクロスオリジンリクエストが許可されている場合、またはドメインのコンマ区切りリストを定義します。

CORSを使用する際に注意する必要があることがいくつかあります。

  • これは、保護されたリソースに対する最初のレベルの防御であり、最終的な防御ではありません。
  • サーバーでCRUD操作を実行するには、リソースに適切な認証と承認を実装する必要があります。
  • 同一生成元ポリシーの実装はブラウザを構築するためのガイドラインであり、必須ではありません。
  • CORSヘッダーは、クライアントがヘッダーを受け入れる場合にのみ役立ちます。最新のブラウザのみがCORSヘッダーを受け入れます。ブラウザを使用してリソース要求を行っていない場合、CROSは適用されません。
  • ブラウザのアドレスバーにリンクを入力すると、ブラウザがOriginヘッダーをサーバーに送信しないため、CORSルールは適用されません。Originヘッダのみを起源によって、その後の資源要求(スタイルシート、JSファイル、フォント)とXHRリクエストにブラウザから送信されます。
    • アドレスバーにリンクを直接入力してリソースファイルにアクセスした場合、ブラウザはOriginそのリクエストにヘッダーを送信しません。

また、GETアクセスを制限する場合は、プライベートバケットでS3の事前署名されたURLを使用します。

Related questions

MORE COOL STUFF

Reba McEntire は、彼女が息子の Shelby Blackstock と共有する「楽しい」クリスマスの伝統を明らかにしました:「私たちはたくさん笑います」

Reba McEntire は、彼女が息子の Shelby Blackstock と共有する「楽しい」クリスマスの伝統を明らかにしました:「私たちはたくさん笑います」

Reba McEntire が息子の Shelby Blackstock と共有しているクリスマスの伝統について学びましょう。

メーガン・マークルは、自然な髪のスタイリングをめぐってマライア・キャリーと結ばれました

メーガン・マークルは、自然な髪のスタイリングをめぐってマライア・キャリーと結ばれました

メーガン・マークルとマライア・キャリーが自然な髪の上でどのように結合したかについて、メーガンの「アーキタイプ」ポッドキャストのエピソードで学びましょう.

ハリー王子は家族との関係を修復できるという「希望を持っている」:「彼は父親と兄弟を愛している」

ハリー王子は家族との関係を修復できるという「希望を持っている」:「彼は父親と兄弟を愛している」

ハリー王子が家族、特にチャールズ王とウィリアム王子との関係について望んでいると主張したある情報源を発見してください。

ワイノナ・ジャッドは、パニックに陥った休暇の瞬間に、彼女がジャッド家の家長であることを認識しました

ワイノナ・ジャッドは、パニックに陥った休暇の瞬間に、彼女がジャッド家の家長であることを認識しました

ワイノナ・ジャッドが、母親のナオミ・ジャッドが亡くなってから初めての感謝祭のお祝いを主催しているときに、彼女が今では家長であることをどのように認識したかを学びましょう.

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セント ヘレナ島のジェイコブズ ラダーは 699 段の真っ直ぐ上る階段で、頂上に到達すると証明書が発行されるほどの難易度です。

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

OxyLEDの新しい15ドルのモーションセンシング常夜灯はどこにでも貼り付けられますが、充電が簡単です

OxyLEDの新しい15ドルのモーションセンシング常夜灯はどこにでも貼り付けられますが、充電が簡単です

私たちの読者は、何千ものOxyLEDのT-02モーションセンサーライトストリップを何年にもわたって購入してきましたが、充電するのが面倒だと感じた場合、新しいT-04は素晴らしいアップグレードのように見えます。T-02のように、 T-04は、付属の粘着ストリップを介して基本的にあらゆる表面に取り付けることができ、暗闇での動きを検出すると自動的に点灯します。

ハンソロ映画セットの写真は、新しいスーツと新しい乗り物を明らかにします

ハンソロ映画セットの写真は、新しいスーツと新しい乗り物を明らかにします

ユニバーサルは、フランケンシュタインの怪物を見つけるのに近いかもしれません。新しい撮影映像でアクマンの舞台裏をご覧ください。

ドナルド・トランプが解雇されたばかりのFBI長官ジェームズ・コミー

ドナルド・トランプが解雇されたばかりのFBI長官ジェームズ・コミー

写真:AP大統領ドナルド・トランプは、連邦捜査局長官のジェームズ・コミーを解雇したばかりです。火曜日の声明で、ホワイトハウスは、トランプが「両方の副検事総長ロッドの明確な勧告に基づいて行動するコミーをオフィスから削除したと述べましたローゼンスタインと司法長官のジェフセッション。

テオドリック大王は、過去の言語と政治的概念に隠された野蛮な将軍でした

テオドリック大王は、過去の言語と政治的概念に隠された野蛮な将軍でした

ウィキメディア・コモンズ経由西部のローマ帝国の中央機関が崩壊し、5世紀の間に州が分裂し、独自の道を進んだとき、新しい王国が出現しました。今日、私たちはこれらの新しい政治単位を特定の野蛮人グループで特定する傾向があります:ガリア南西部の西ゴート族、ガリア北部のフランク人、英国のアングロサクソン人、北アフリカのヴァンダル人。

バレンタインデーにユーカリのシャワースチーマーで「最高の睡眠」を贈りましょう。

バレンタインデーにユーカリのシャワースチーマーで「最高の睡眠」を贈りましょう。

BodyRestore ユーカリ シャワー スチーマーは、Amazon で 11,000 を超える 5 つ星の評価を得ています。セルフケアが必要な人へのバレンタインデーのギフトとして、ホームスパ製品を贈りましょう。

この「邪悪な吸引力」を備えたこの250ドルのハンドヘルド掃除機は、Amazonで75%オフになりました

この「邪悪な吸引力」を備えたこの250ドルのハンドヘルド掃除機は、Amazonで75%オフになりました

多くのAmazonの買い物客がUmlo H6ハンドヘルド掃除機を推奨しており、現在スーパーセール中です. ハンドヘルド デバイスには HEPA フィルターが装備されており、複数のアタッチメントが付属しています。Amazonで75%オフのときにハンドヘルド掃除機を購入する

オクタヴィア・スペンサー、「ザ・ヘルプ」共演者のシシー・スペイセクが17歳で映画のインターンをした後、彼女のことを「実際に」思い出したと語る

オクタヴィア・スペンサー、「ザ・ヘルプ」共演者のシシー・スペイセクが17歳で映画のインターンをした後、彼女のことを「実際に」思い出したと語る

オクタヴィア・スペンサーは、ヘルプで一緒に共演するずっと前に、シシー・スペイセク主演の 1990 年の映画「ロング・ウォーク・ホーム」でインターンとして働いていました。

ジュリア・フォックス、「マスカラ」がTikTokユーザーの性的暴行コードだったことを知らなかったことを謝罪

ジュリア・フォックス、「マスカラ」がTikTokユーザーの性的暴行コードだったことを知らなかったことを謝罪

ジュリア・フォックスは、彼女のTikTokで共有された応答ビデオで、「本当に申し訳ありません。今、本当に年齢を示しています」と述べました。

メリック・ガーランドはアメリカに失敗しましたか?

バイデン大統領の任期の半分以上です。メリック・ガーランドは何を待っていますか?

メリック・ガーランドはアメリカに失敗しましたか?

人々にチャンスを与えることは、人生で少し遅すぎると私は信じています。寛大に。

良いものと醜いもの: 2022

良いものと醜いもの: 2022

もうわからない。何が「ヒット」かを正確に判断することは、もはやほとんど不可能に思えます。

楽しみのために — 2022 年のトップの新しい音楽再生

楽しみのために — 2022 年のトップの新しい音楽再生

ついに!私の 2022 年のトップ ニューミュージック プレイへようこそ。私は毎年これを共有して、友達とつながります。

ヒーズ・オール・アイヴ・ガット

ヒーズ・オール・アイヴ・ガット

あなたの心をチェックしてください。私たちの心はしばしば迷います。

Language