web-dev-qa-db-ja.com

Amazon S3からの画像ホットリンクを防ぎ、ソーシャルネットワークを許可します

私はAmazon S3を使用して、小さなプロジェクトでいくつかのアセット(主に画像)をホストしています。私はリーチングを防ぐ方法を見つけようとしています(誰かがボットのネットワークを使って私の請求書を星に投げ込もうとした場合、これは非常に深刻になる可能性があります)。

私の現在のアプローチでは、このポリシーを使用しています。

   {
  "Version": "2008-10-17",
  "Id": "",
  "Statement": [
    {
      "Sid": "Allow in my domains",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::BUCKET/*",
      "Condition": {
        "StringLike": {
          "aws:Referer": [
            "http://www.myproject.com/*"
          ]
        }
      }
    },
    {
      "Sid": "Deny access if referer is not my sites",
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::BUCKET/*",
      "Condition": {
        "StringNotLike": {
          "aws:Referer": [
            "http://www.myproject.com/*"
          ]
        }
      }
    }
  ]
}

問題は、このようなポリシーを適用すると、FacebookやGoogle Plusなどのソーシャルネットワーク共有サービスが「投稿」を作成するために画像にアクセスできなくなることです。 FacebookとGoogleは両方とも共有コンテンツにアクセスし、生成されたサムネイルをコンテンツ画像から独自のサーバーに転送します(FacebookはAkamai、tbwを使用)...

ファイルを取得するために2つのソーシャルネットワークがどのホストを使用しているのかを知っている人はいますか?

3
K.D.

Facebook facebookexternalhitユーザーエージェントを使用

facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"

Google+ 「Google」を含むユーザーエージェントを使用

Google (+https://developers.google.com/+/web/snippet/)

ユーザーエージェントによるアクセスを許可する必要があります。

1