Ich implementiere einen direkten Datei-Upload vom Client-Computer auf Amazon S3 über die REST-API, wobei nur JavaScript ohne serverseitigen Code verwendet wird. Alles funktioniert gut, aber eines macht mir Sorgen ...
Wenn ich eine Anfrage an die Amazon S3 REST-API sende, muss ich die Anfrage signieren und eine Signatur in den Authentication
Header einfügen. Um eine Signatur zu erstellen, muss ich meinen geheimen Schlüssel verwenden. Aber alles geschieht auf Client-Seite, sodass der geheime Schlüssel leicht aus der Seitenquelle enthüllt werden kann (selbst wenn ich meine Quellen verschleiere / verschlüssele).
Wie kann ich damit umgehen? Und ist es überhaupt ein Problem? Vielleicht kann ich die Verwendung bestimmter privater Schlüssel nur auf REST-API-Aufrufe von einem bestimmten CORS-Ursprung und nur auf PUT- und POST-Methoden beschränken oder den Schlüssel nur mit S3 und einem bestimmten Bucket verknüpfen? Möglicherweise gibt es andere Authentifizierungsmethoden?
Die "serverlose" Lösung ist ideal, aber ich kann in Betracht ziehen, einige serverseitige Verarbeitungen durchzuführen, ohne das Hochladen einer Datei auf meinen Server und das anschließende Senden an S3.