Seguridad de activos / medios en s3

2

Tengo mi solicitud escrita en Flask (Python 3.6) y ejecutada en EB.

Necesito implementar un editor de contenido que permita cargar archivos en el servidor y me gustaría almacenarlos en s3. La mayoría de los archivos cargados estarán disponibles después de iniciar sesión en mi aplicación.

¿La pregunta es cómo manejar la seguridad de dichos archivos?

¿Debo usar mi aplicación como middleware y verificar si el usuario está registrado y, en ese caso, descargar el archivo de S3 en mi backend y devolverlo al usuario como respuesta estándar del Frasco?

¿O mejor idea es generar urls presignados con fecha de caducidad?

El problema con las URL presignadas es que perderé el almacenamiento en caché del lado del navegador de mis archivos, que me gustaría conservar (la mayoría de los archivos son imágenes, por lo que es innecesario volver a descargarlos cada vez).

El segundo problema también es que esta URL no está vinculada de ninguna manera con el usuario que ha iniciado sesión en mi aplicación, por lo que, básicamente, esta URL presignada puede ser utilizada por cualquier persona hasta que caduque.

Ahora mismo tengo el código heredado implementado de primera manera:

    
pregunta Blejwi 04.10.2017 - 08:05
fuente

1 respuesta

2

Facebook hace algo similar a la "URL presignada": su CDN de imagen no comprueba la autenticación, ni está en el mismo dominio, por lo que ni siquiera puede obtener la cookie de la sesión de Facebook si así lo desea, en lugar de eso usan la URL como clave (la URL solo se muestra al usuario autenticado). Parece estar funcionando bien para ellos, así que no veo ningún problema con el uso de ese enfoque en su proyecto.

    
respondido por el André Borie 04.10.2017 - 14:45
fuente

Lea otras preguntas en las etiquetas