私は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つのソーシャルネットワークがどのホストを使用しているのかを知っている人はいますか?
Facebook facebookexternalhit
ユーザーエージェントを使用
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
Google+ 「Google」を含むユーザーエージェントを使用
Google (+https://developers.google.com/+/web/snippet/)
ユーザーエージェントによるアクセスを許可する必要があります。