Definition von Hack
Ich bin mir nicht sicher, was Hacking im Kontext Ihrer Frage bedeutet.
Ich gehe davon aus, dass Sie tatsächlich meinen, "dass jeder etwas anderes tun kann als eine Datei hochzuladen", einschließlich des Löschens oder Zugriffs auf Objekte in Ihrem Bucket.
Ihre Lösung
Wie bereits oben erwähnt, können Sie Ihren aktuellen Ansatz verwenden, indem Sie "Zugriff auf nicht authentifizierte Identitäten aktivieren" aktivieren [1]. Sie müssen dann zwei Rollen erstellen, von denen eine für "nicht authentifizierte Benutzer" bestimmt ist. Sie können diese Rolle PutObject-Berechtigungen für den S3-Bucket erteilen. Auf diese Weise kann jeder, der Ihre Seite besucht, Objekte in den S3-Bucket hochladen. Ich denke, das ist, was Sie beabsichtigen, und es ist aus Sicherheitsgründen in Ordnung, da die IdentityPoolId ein öffentlicher Wert ist (dh nicht vertraulich).
Eine andere Lösung
Ich denke, Sie müssen Amazon Cognito nicht verwenden, um das zu erreichen, was Sie wollen. Es ist wahrscheinlich ausreichend, S3 eine Bucket-Richtlinie hinzuzufügen , die allen die Berechtigung für PutObject erteilt .
Ist das sicher?
Ich würde jedoch nicht empfehlen, den direkten öffentlichen Schreibzugriff auf Ihren S3-Bucket zu aktivieren .
Wenn jemand Ihre Website durch Spammen Ihres Upload-Formulars missbraucht, fallen S3-Gebühren für Put-Vorgänge und Datenspeicherung an.
Es wäre besser, die Daten über Amazon CloudFront zu senden und eine WAF mit ratenbasierten Regeln [2] anzuwenden oder einen benutzerdefinierten Ratenbegrenzungsdienst vor Ihrem S3-Upload zu implementieren. Dies würde sicherstellen, dass Sie angemessen auf böswillige Aktivitäten reagieren können.
Verweise
[1] https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html
[2] https://aws.amazon.com/about-aws/whats-new/2019/08 / Unterer Schwellenwert für Aws-Waf-Rate-basierte Regeln /