2016-04-19 11 views
0

Ich muss s3 verwenden, um Inhalte von Benutzern zu speichern und den Zugriff in einem sozialen Netzwerkdienst zu steuern.Amazon vorgezeichnete URL, nur bestimmte Dateitypen zulassen?

Bisher ist es das, was ich gedacht zu tun:

  1. Kunde sagt LAMP-Server Er will eine Datei
  2. LAMP authentisiert laden und erzeugt eine presigned URL für s3, wo Benutzer hochladen können. Es erstellt auch eine verschlüsselte Version dieses Schlüssels mit dem privaten Schlüssel. Dann fügt es diesen Schlüssel zusammen mit dem Benutzer hinzu, der es in einer mysql-Tabelle gestartet hat (zusammen mit dem Start)
  3. LAMP sendet dann den Schlüssel und die digitale Signatur von 2. an den Client.
  4. Client lädt dann die Datei zu s3
  5. Nach dem Beenden teilt er LAMP, dass diese Datei abgeschlossen wurde. Es sendet den Schlüssel und die digitale Signatur ein.
  6. LAMP stellt sicher, dass sowohl der Schlüssel als auch die Signatur übereinstimmen. Wenn dies der Fall ist, weiß LAMP, dass der Client ehrlich ist über den ihm gegebenen Schlüssel (und er hat ihn nicht nach dem Zufallsprinzip generiert)
  7. LAMP prüft dann s3 um sicherzustellen, dass die Datei mit diesem Schlüssel existiert, wenn ja, dann löschen Sie die Zeile, die in 2.

Meine Frage ist, wurde hinzugefügt:

  • Hat die obigen Daten fließen einige ernsthafte Fehler, Ineffizienz?
  • Wie kann ich sicherstellen, dass der Benutzer nur nur gültig zum Hochladen von Dateien erlaubt ist (wie png, jpg, pdf, etc.) .Ich die Erweiterung nur glaubt Überprüfung nicht genug ist, wie es
  • geändert werden kann

Antwort

0

I wouldn Lassen Sie Ihre Kunden nicht direkt zu S3 hochladen. Ich würde die Datei auf Ihren Server hochladen, wo Sie eine Validierung durchführen können (und Sie sind richtig, a file extension check is not sufficient). Sobald die Datei validiert ist, senden Sie die Datei selbst an S3. Auf diese Weise geben Sie keine Kontrolle über den Prozess auf.

+0

Ich mache direkten Upload, weil das 2x Bandbreite spart. Ich muss die Datei nicht auf den Server herunterladen und dann auch auf s3 hochladen. –

+0

@harvey_slash Wenn sie nicht massiv sind, würde ich es nicht tun – Machavity

+0

Datenübertragungen in EC2 sind kostenlos. Datenübertragungen von EC2 nach S3 (wenn sie in derselben Region sind) sind ebenfalls kostenlos. Außerdem sind Datenübertragungen von EC2 nach S3 ziemlich schnell. –

0

Das Rad nicht neu erfinden. Schauen Sie in den Fine-Uploader oder ähnliches um zu tun, was Sie wollen. Sie dokumentieren auch den Fluss, den Sie emulieren können, auch wenn Sie Ihre eigenen implementieren möchten (aber Fine-Uploader funktioniert gut und ist in einigen Fällen ziemlich billig oder sogar kostenlos).

Verwandte Themen