Tengo una aplicación web que permite a los usuarios subir imágenes. Guardo las imágenes en un depósito S3 y les doy todos los nombres de archivo que son esencialmente el resultado de MD5 (session_id + unix_timestamp). ¿Hay algún inconveniente en este método para crear nombres únicos de archivos de imágenes?Creación de un nombre de archivo único (hash) para imágenes cargadas por el usuario
Respuesta
Consideraría almacenar los archivos con algún tipo de formato de carpeta, ya que muchos clientes basados en UI S3 funcionarán mucho mejor si no hay 200,000 archivos en una carpeta. Además, no estaría de más añadir la extensión y el tipo de mime correctos a los archivos cargados. De esa manera, si decides servirles directamente desde S3 a una página web, etc., estarán listos para funcionar.
2012/2/6gtbb88uytgfrses4.png
También se podría poner las dimensiones en el nombre ...
2012/2/6gtbb88uytgfrses4_600x800_.png
Desde el punto de vista de la exclusividad, debe estar seguro. No es probable que se produzcan colisiones (aunque es posible) cuando se usa MD5.
Pero, si desea proporcionar a los usuarios la descarga de estos archivos, supongo que está almacenando los nombres de los archivos originales en otra parte (base de datos o similar). ¿Está bien? Si eso es correcto, es mejor que almacene el ID de sesión y la marca de tiempo en el mismo lugar, y siga adelante con un GUID para el nombre del archivo (en lugar de proporcionarlos a su función hash MD5), que sería más seguro de una colisión punto de vista.
Usted no recibirá una colisión con MD5. –
@TomAndersen realmente? Yo no estaría tan seguro No es probable, y no creo que la mayoría de las aplicaciones prácticas de MD5 estén amenazadas por colisiones, pero sí es posible. – Viccari
Es solo posible para una situación de ataque, incluso entonces es difícil. El tamaño del espacio hash no es algo que pueda imaginarse. –
- 1. ¿Cómo uso AWS S3 para almacenar imágenes cargadas por el usuario?
- 2. php Nombre de archivo único al cargar
- 3. ¿El hash de un GUID es único?
- 4. Problemas para comprobar la entrada del nombre de usuario contra el archivo plano para la creación del usuario
- 5. Establecer imágenes de fondo cargadas desde el disco
- 6. Secuencia de comandos para cambiar el nombre de los archivos usando un hash sha1() de su nombre de archivo
- 7. Creación de scripts para el usuario final
- 8. ¿El nombre de un paquete es único para las aplicaciones?
- 9. Creación de una cadena de 10 caracteres alfanumérico único
- 10. ¿Cómo generar un hash único para una URL?
- 11. Un usuario por base de datos contra usuario único para todas las bases de datos
- 12. Python: ¿Cómo crear un nombre de archivo único?
- 13. Desvanecimiento en imágenes cargadas sincronizadas en iOS
- 14. Cómo obtener un nombre de usuario y SID para el usuario por un nombre de dominio en ldap
- 15. Usuario único de solo lectura para svn
- 16. Hash de imagen para imágenes muy similares
- 17. Agregar un clip nuevo estilo no afecta viejas imágenes cargadas
- 18. Nombre de usuario como marca de agua
- 19. Creación de un perfil de usuario extendida
- 20. ¿Obtener el nombre y el apellido de un contacto en lugar del nombre único para mostrar?
- 21. Generar nombre de archivo con la fecha de creación
- 22. CarrierWave: cree el mismo nombre de archivo único para todos los archivos versionados
- 23. Almacenamiento de imágenes cargadas en Google App Engine con Java
- 24. Recibe el nombre de archivo por lotes para el bucle
- 25. Almacenar la contraseña por separado desde el nombre de usuario
- 26. La detección de un "único" usuario anónimo
- 27. Asignar a cada usuario un Hash único de 100 caracteres en Ruby on Rails
- 28. ¿Cómo obtengo un nombre de archivo único de un objeto de diálogo de archivo en VBA (para MS Access 2007)?
- 29. Generación de un nombre de archivo único basado en el tiempo para la carga sin crear una condición de carrera
- 30. Registro de Python (nombre de la función, nombre de archivo, número de línea) utilizando un único archivo
buen punto acerca de que los clientes S3 no funcionan bien con una gran cantidad de archivos en un único directorio. Subdividir en diferentes directorios parece ser el camino a seguir. –
cómo dejar que s3 te permita generar dinámicamente nuevos directorios al cargarlos? No puedo encontrar la política de cubos para esto. – jedierikb
No hay directorios en realidad, por lo que simplemente establece el nombre del archivo en la carga para que sea la ruta completa. –