1

Amazon S3 を使用して、ウェブサイトの画像を保存しています。他の Web サイトが私の画像をホットリンクするのを阻止するバケット ポリシーがあります。

これを機能させるには、S3 でファイルのアクセス許可を「プライベート」に設定し、バケット ポリシーで自分の Web サイトのみにアクセスできるようにします。

これは問題なく動作しますが、ファイルが「プライベート」であるため、ブラウザーで画像を直接表示することはできません。これは許可したいことです。

ポリシーはこちら

{
  "Version": "2008-10-17",
  "Id": "preventHotLinking",
  "Statement": [
    {
      "Sid": "1",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::mybucket/*",
      "Condition": {
        "StringLike": {
          "aws:Referer": [
            "http://mydomain.com/*",
            "http://www.mydomain.com/*"
          ]
        }
      }
    }
  ]
}

要約すると、次のようになります。

  • ファイル自体は非公開に設定されています
  • 上記のポリシーは、ドメイン「mydomain.com」のページに画像を表示することを許可しますが、「someoneelsesdomain.com」では許可しません

ただし、これは直接アクセスもブロックするため、http://jbtestyt.s3.amazonaws.com/archie.jpgをブラウザーに貼り付けても画像は表示されません (非公開であるため)。

しかし、直接アクセスできるように画像を表示したいと思います。

おそらく解決策は、ファイルを公開してから、私がリストしたもの以外のすべてのリファラーを拒否することですか? しかし、私は確信が持てず、そのようなものを見つけることができませんでした.

よろしくお願いします。

4

1 に答える 1

0

「ネイティブ」な S3 ソリューションを探しているのではないかと推測しています。よくよく考えてみると、ホットリンクとは本質的に、ファイルに「直接アクセス」することです。したがって、「ファイル自体がプライベートに設定されている」と、(少なくとも AWS では) 何があっても直接アクセスできないことが常に保証されます。これは S3 の設計によるものです。リファラーをホワイトリストに登録するために提案することは、S3 だけを使用してこれを達成する唯一の簡単な方法です。

于 2013-02-25T11:55:38.583 に答える