署名付き URL を使用せずに Amazon S3 でホットリンクを防止する方法はありますか?
7 に答える
ドメインからのリファラーを許可し、ドメインからではないリファラーを拒否するバケットポリシーが必要です。明示的な拒否を含めない場合、画像をホットリンクできることがわかりました。多くのガイドや例では、許可ポリシーが示されているだけで、拒否の部分については触れられていません。
これが私のポリシーです。BUCKET-NAMEとYOUR-WEBSITEを独自の詳細に変更してください。
{
"Version": "2008-10-17",
"Id": "",
"Statement": [
{
"Sid": "Allow in my domains",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKET-NAME/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://www.YOUR-WEBSITE.com/*"
]
}
}
},
{
"Sid": "Deny access if referer is not my sites",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKET-NAME/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://www.YOUR-WEBSITE.com/*"
]
}
}
}
]
}
適切な S3 バケット ポリシーを設定することで、参照ポリシーを追加してホットリンクを防止できます。
http://s3browser.com/working-with-amazon-s3-bucket-policies.php
Apache RewriteMapを使用して、相対リンクを再マッピングし、ファイル拡張子(* .jpg、*。gif、* swf、*。fla)をCloudfrontに再マッピングします。基本的に、画像のURLをサイトへの相対リンクとして表示します。S3 / cloudfront URLの検出を完全に妨げるわけではなく、泥棒になる可能性のある難しさの層を追加するだけです。
試してみる価値があるかもしれませんが、上記の方法を使用してhtaccess経由でホットリンク制限を適用してください。自分で試したことはありません。
それは彼らの公式ドキュメントにあります
examplebucket
バケット名とexample.com
ドメインに変更します。
"Version":"2012-10-17",
"Id":"http referer policy example",
"Statement":[
{
"Sid":"Allow get requests originating from www.example.com and example.com.",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::examplebucket/*",
"Condition":{
"StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
}
}
]
}
ここに良いチュートリアルがあります。Web サイトのコードに空白文字が含まれているため、ソリューションが機能しないため、必ずコメントを確認してください。
ホットリンクは、Amazon が Cloudfront を作成した理由の 1 つです。Cloudfront ははるかに高速です。私はあなたがここで見ることができるそれについて書きました。
http://blog.sat.iit.edu/2011/12/amazon-aws-s3-vs-cloudwatch-performance-grudgematch/
編集: S3 と Cloudfront はどちらも同じタイプのバケット ポリシーを使用して、リクエストが正しい URL から送信されるようにします。ただし、Cloudfront はまだ高速です。
あまり。それを介して EC2 インスタンスとプロキシを実行できます。