Meine App-Benutzer laden ihre Dateien in einen Bucket hoch. Wie kann ich sicherstellen, dass jedes Objekt in meinem S3-Bucket über einen eindeutigen Schlüssel verfügt, um das Überschreiben von Objekten zu verhindern?Amazon S3 erstellt eindeutige Schlüssel für jedes Objekt
Im Moment bin ich die Verschlüsselung von Dateinamen mit einem zufälligen Zeichenfolge in meinem PHP-Skript, bevor Sie die Datei auf S3 sendet.
Aus Gründen der Diskussion nehmen wir an, dass der Uploader einen Weg findet, den Dateinamen beim Upload zu manipulieren. Er möchte alle Bilder auf meiner Seite durch ein Bild von banana ersetzen. Was ist ein guter Weg, um das Überschreiben von Dateien in S3 zu verhindern, wenn die Verschlüsselung fehlschlägt?
Edit: Ich glaube nicht, funktioniert die Versionierung, weil ich keine Version-ID in einer Bild-URL, wenn die Anzeige der Bilder von meinem Eimer angeben.
Vielen Dank für Ihre Antwort! Ich verschlüssele auf eine zufällige Zeichenfolge. Ich denke, es ist die beste Lösung zu prüfen, ob die Datei bereits existiert, auch wenn ich eine zusätzliche S3-Anfrage mache. Oder wenn ich alle Dateiinformationen in einer Datenbank ablege, kann ich die db-Tabelle mit mysql überprüfen. – CyberJunkie
Wie bereits erwähnt, ist die Verschlüsselung des Dateinamens nicht die effektivste Lösung. Sie können den Namen durch eine zufällige Zeichenfolge ersetzen und die Zuordnungen in Ihrer Datenbank speichern. Schau dir 'openssl_random_pseudo_bytes()' an. –
@TerenceJohnson, "fast nie" kann "willkürlich unwahrscheinlich" sein, indem einfach mehr zufällige Bits hinzugefügt werden. Eine extra Reise nach S3 zu machen wird Ihre Servicezeit beeinträchtigen. – Fantius