Los usuarios de mi aplicación cargan sus archivos en un solo depósito. ¿Cómo puedo asegurarme de que cada objeto en mi cubo S3 tenga una clave única para evitar que se sobrescriban los objetos?Amazon S3 creando claves únicas para cada objeto
En este momento estoy encriptando nombres de archivos con una cadena al azar en mi script php antes de enviar el archivo a S3.
Por el bien de la discusión, supongamos que el cargador encuentra una forma de manipular el nombre del archivo al cargarlo. Él quiere reemplazar todas las imágenes en mi sitio con una imagen de banana. ¿Cuál es una buena manera de evitar sobrescribir archivos en S3 si falla el cifrado?
Editar: No creo que el versionado funcione porque no puedo especificar un ID de versión en una URL de imagen cuando se muestran imágenes de mi bucket.
¡Gracias por responder! Estoy encriptando a una cadena aleatoria. Supongo que comprobar si el archivo ya existe es la mejor solución, incluso si realizo una solicitud S3 adicional. O si almaceno toda la información del archivo en una base de datos, puedo verificar la tabla db con mysql. – CyberJunkie
Como mencioné anteriormente, encriptar el nombre del archivo no es la solución más efectiva. Puede reemplazar el nombre con una cadena aleatoria y almacenar las asignaciones en su base de datos. Mira 'openssl_random_pseudo_bytes()'. –
@TerenceJohnson, "casi nunca" puede ser "arbitrariamente improbable" al agregar más bits aleatorios. Hacer un viaje extra a S3 va a perjudicar su tiempo de servicio. – Fantius