¿Hay alguna manera de evitar enlaces directos en Amazon S3 sin utilizar URL firmadas?¿Cómo evito los enlaces directos en Amazon S3 sin utilizar las URL firmadas?
Respuesta
Al configurar la política correcta de cubo S3, puede agregar una política de referencia para evitar el enlace directo.
http://s3browser.com/working-with-amazon-s3-bucket-policies.php
Realmente no. Podría ejecutar una instancia EC2 y un proxy a través de eso.
uhhhhh. no. que derrota el propósito de un CDN. – FlavorScape
Utilizo Apache RewriteMap para reasignar enlaces relativos a las extensiones de archivo seleccionadas - * .jpg, * .gif, * swf, * .fla a Cloudfront. Básicamente hace que la url de sus imágenes presente como enlaces relativos a su sitio. No impide el descubrimiento de la url S3/cloudfront totalmente, solo agrega una capa de dificultad para el ladrón.
Puede valer la pena intentarlo, aplique las restricciones de hotlink a través de htaccess con el método anterior en su lugar. No lo he probado yo mismo.
¿Eh? ¿No significa eso que cada solicitud de imagen tiene que ir a su servidor antes de que pueda ir al servidor de CloudFront? Si es así, ¿no derrota eso al punto de utilizar un CDN? (No sería para archivos realmente grandes como video, ¿pero para imágenes?) –
La solicitud llegará a su servidor web y se le indicará al navegador dónde debe ir a buscar el archivo, pero el historial del navegador nunca se actualiza con la URL real a la CDN. Este es esencialmente el mismo truco detrás de las "rutas" en la mayoría de los marcos de controlador front-end, pero en este caso la solicitud nunca se reenvía al servidor de aplicaciones, solo a Apache. – Claude
@ Clade, si en lugar de navegador, se usan gestores de descarga, o se usa algo como curl/wget, ¿la redirección no será transparente y, por lo tanto, será una forma de habilitar la vinculación directa? – icarus74
Hay un buen tutorial here. Asegúrese de revisar los comentarios, ya que hay un espacio en blanco en el código del sitio web que hace que la solución no funcione.
Hotlinking es una de las razones Amazon creó Cloudfront. Cloudfront es mucho más rápido que. Hice una reseña sobre ella que puedes ver aquí.
http://blog.sat.iit.edu/2011/12/amazon-aws-s3-vs-cloudwatch-performance-grudgematch/
edición: S3 y Cloudfront ambos utilizan el mismo tipo de política de cubo para asegurarse de que la petición viene de la dirección URL correcta. Sin embargo, Cloudfront es aún más rápido.
Cloudfront no evita hotlinking o respeta las políticas de S3 –
Necesita una política de depósito que le permita referidos de su (s) dominio (es) y niega referencias que no son de sus dominios. Descubrí que las imágenes se pueden vincular si no se incluye la denegación explícita: muchas guías y ejemplos solo dan la política de permitir y no mencionan la parte de denegación.
Aquí es mi política, sólo cambia CUBO-NAME y SU-sitio web 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/*"
]
}
}
}
]
}
Gracias por esto. Esto realmente me ayudó y funcionó bien. Mi única sugerencia es que quizás también simplemente agregue una entrada para "http://YOUR-WEBSITE.com/*" a la respuesta solo para cubrir todas las bases ya que ahí es donde estaba mi hipo. Saludos por el guion perfecto sin embargo. – Cheeky
Esto funciona muy bien, pero ¿cómo se permiten las referencias vacías? Al vincular imágenes a través de CSS, la referencia está vacía y las imágenes no se muestran. – prophoto
¡Perfecto! Me salvaste – Ricardo
Está en su official docs
Cambio examplebucket
a su nombre de depósito, 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/*"]}
}
}
]
}
- 1. Sin conexión Amazon S3
- 2. Amazon S3 URL firmada en PHP
- 3. Amazon S3 de reescritura de URL
- 4. Amazon S3 - ¿Cómo construir correctamente las URL que apuntan a los objetos en un cubo?
- 5. Convierta las URL y @ * en los enlaces
- 6. Amazon S3 cargar archivo y obtener URL
- 7. Concurrencia en Amazon S3
- 8. ¿Hay conflicto entre las políticas de depósito y las URL firmadas?
- 9. caché de huella digital de URL en Amazon S3
- 10. Cómo transferir un archivo de URL a Amazon S3
- 11. Creación de URL firmados para Amazon CloudFront
- 12. Encabezados personalizados en Amazon S3
- 13. Crear URL firmadas para CloudFront con Ruby
- 14. zcat en amazon s3
- 15. ¿Cómo permito que los clientes carguen en Amazon S3 sin dar mis claves?
- 16. Almacenamiento en caché de imágenes con cadenas de consulta diferentes (URL firmadas S3)
- 17. Carga en Amazon S3 sin acceso y clave secreta
- 18. Cómo cambiar los metadatos en un objeto en Amazon S3
- 19. Cómo definir permisos en Amazon S3
- 20. Amazon S3 y Checksum
- 21. URL para obtener un archivo de Amazon S3
- 22. Iniciar sesión en Amazon S3
- 23. Archivo duplicado en Amazon S3
- 24. Amazon S3 Acceda a la imagen por url
- 25. Permisos de Amazon S3
- 26. SignatureDoesNotMatch - Amazon S3 API
- 27. Arquitectura de Amazon S3
- 28. Amazon S3 boto - cómo eliminar la carpeta?
- 29. Amazon S3 Hosting Streaming Video
- 30. Cómo servir activos comprimidos desde Amazon S3
Por favor, publique una respuesta aquí, en lugar de vincularla a una respuesta. –