amazon-s3 hotlinking

¿Cómo evito los enlaces activos en Amazon S3 sin usar URL firmadas?



amazon-s3 hotlinking (7)

Al configurar la política de depósito S3 correcta, puede agregar una política de referencia para evitar el enlace activo.

http://s3browser.com/working-with-amazon-s3-bucket-policies.php

¿Hay alguna manera de evitar que se active el enlace en Amazon S3 sin usar URL firmadas?


Aquí hay un buen tutorial. Asegúrese de revisar los comentarios, ya que hay un carácter de espacio en blanco en el código del sitio web que hace que la solución no funcione.


Está en sus documentos oficiales.

Cambie examplebucket a su nombre de cubo, y example.com a su dominio.

"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/*"]} } } ] }


Hotlinking es una de las razones por las que Amazon creó Cloudfront. Cloudfront es mucho más rápido que Hice un artículo sobre esto que puedes ver aquí.

http://blog.sat.iit.edu/2011/12/amazon-aws-s3-vs-cloudwatch-performance-grudgematch/

edit: S3 y Cloudfront usan el mismo tipo de política de depósito para asegurarse de que la solicitud proviene de la URL correcta. Sin embargo, Cloudfront es aún más rápido.


Necesita una política de depósito que permita tanto a los remitentes de su dominio (s) como a los que no pertenecen a sus dominios. Descubrí que las imágenes se pueden enlazar en caliente si no se incluye la denegación explícita: muchas guías y ejemplos solo dan la política de permiso y no mencionan la parte de denegación.

Aquí está mi política, simplemente cambie BUCKET-NAME y YOUR-WEBSITE a sus propios detalles:

{ "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/*" ] } } } ] }


Realmente no. Podrías ejecutar una instancia de EC2 y un proxy a través de eso.


Utilizo Apache RewriteMap para reasignar enlaces relativos para seleccionar extensiones de archivo - * .jpg, * .gif, * swf, * .fla a Cloudfront. Básicamente, hace que la URL de sus imágenes se presente como enlaces relativos a su sitio. No impide el descubrimiento total de la URL de S3 / cloudfront, solo agrega un nivel de dificultad para el ladrón.

Podría valer la pena intentarlo, aplique las restricciones de enlace a través de htaccess con el método anterior en su lugar. No lo he probado yo mismo.