2017-09-20 6 views
5

J'ai essayé de trouver une réponse à cette question pendant quelques heures maintenant, mais je n'ai pas réussi à trouver une réponse concluante. J'espère que quelqu'un ici pourra faire la lumière sur ma question. Considérez ce qui suit URL Exemple AWS S3:Affichage d'URL signées AWS S3 dans une application Web?

https://some-bucket.s3-eu-west-2.amazonaws.com/uploads/images/some_image.jpg?X-Amz-Expires=600&X-Amz-Date=20170920T124015Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAI6CJYFYSSWMXXXXX/20170920/eu-west-2/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=0481296b70633de9efb2fce6e20751df2f55fd79b5ff9570c02ff8f587dce825

Dans mon exemple spécifique, l'URL ci-dessus est une requête pour afficher une image sur S3 que je suis exposais directement dans une balise HTML img, et l'utilisateur dans Amz -Credential possède à la fois des autorisations de lecture et d'écriture. L'URL est également définie pour expirer dans 10 minutes. Il est possible de lier directement à l'image via cette URL, ou est-il possible que dans ces 10 minutes, la signature de cette URL puisse être utilisée dans une requête REST malveillante pour supprimer ou modifier l'image au lieu de le regarder? Je soupçonne qu'une action différente aura une signature différente pour rendre cela impossible, mais étant donné ma compréhension très limitée de l'authentification AWS, j'ai pensé qu'il était préférable de demander au cas où. Je sais que je pourrais créer un utilisateur en lecture seule (plus de complexité) ou cacher l'URL S3 derrière une action de contrôleur sur ma propre application web (nécessite 2 demandes totales pour charger chaque image, le rendant inefficace), mais je voudrais plutôt apprendre si mon approche actuelle est sûre ou non avant de recourir à l'un ou l'autre.

Merci beaucoup pour votre temps. :)

Répondre

2

Si votre URL pré-signée a l'autorisation PUT ou DELETE, quelqu'un pourrait essayer d'obtenir le Signature + AccessKeyId pour écraser ou supprimer votre objet.

Juste que make sure que vous signez l'URL avec une autorisation en lecture seule et je suppose que vous êtes bon.