Ich habe eine App, die Benutzerdateien auf S3 hochlädt. Im Moment ist die ACL für die Ordner und Dateien auf privat gesetzt.Sicheres Versenden von Dateien von Amazon S3
Ich habe eine DB-Tabelle erstellt (so genannte docs), die die folgenden Informationen speichert:
id
user_id
file_name (original file as specified by the user)
hash_name (random hash used to save the file on amazon)
Also, wenn ein Benutzer eine Datei herunterladen will, ich zum ersten Mal in der db-Tabelle überprüfen, dass sie Zugang zu Datei. Ich würde es vorziehen, wenn die Datei nicht zuerst auf meinen Server heruntergeladen und dann an den Benutzer gesendet wird - ich möchte, dass sie die Datei direkt von Amazon abrufen können.
Ist es in Ordnung, sich auf einen sehr langen Hashnamen zu verlassen (was es im Prinzip unmöglich macht, einen Dateinamen zufällig zu erraten)? In diesem Fall kann ich die ACL für jede Datei auf public-read setzen.
Oder gibt es andere Optionen, die ich verwenden kann, um die Dateien zu bedienen, während sie privat bleiben?
Also, im Grunde gibt es keine Möglichkeit, die ACL privat zu halten und sie immer noch von amazon dienen? Wie wäre es, die ACL vorübergehend in Public-Read zu ändern, sie dann von S3 aus zu bedienen und dann die ACL wieder in den Private-Modus zu ändern? – JonoB
Siehe meine aktualisierte Antwort. Sie können eine zeitlich begrenzte öffentliche URL generieren, ohne Ihre ACL für die Welt zu öffnen. –
@EricJ.kann ich wissen, wie man es authentifizierten Benutzer macht, um Bilder anzusehen. Wenn Sie dann wissen, können Sie für diese Frage antworten http://stackoverflow.com/questions/40168221/laravel-secure-amazon-s3-bucket-files.Thank Sie – iCoders