2017-09-20 66 views
5

Próbuję znaleźć odpowiedź na to pytanie od kilku godzin, ale nie udało mi się wymyślić rozstrzygającej odpowiedzi. Mam nadzieję, że ktoś tutaj będzie mógł rzucić trochę światła na moje pytanie. Rozważmy następujący przykład AWS S3 URL:Udostępnianie podpisanych adresów URL AWS S3 w aplikacji sieci 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

W moim konkretnym przykładzie, powyższy URL to żądanie wyświetlenia obrazu na S3 której jestem odsłaniając bezpośrednio w tagu HTML img, a użytkownik w AMZ -Credential ma uprawnienia do odczytu i zapisu. URL wygaśnie również za 10 minut.

Czy można bezpiecznie połączyć z obrazem bezpośrednio przez ten adres URL, czy istnieje możliwość, że w ciągu tych 10 minut podpis z tego adresu URL może zostać użyty w złośliwie spreparowanym żądaniu REST w celu usunięcia lub zmodyfikowania obrazu zamiast oglądasz to?

Podejrzewam, że inna akcja będzie miała inny podpis, aby uniemożliwić to, ale biorąc pod uwagę moje bardzo ograniczone pojęcie o autoryzacji AWS, pomyślałem, że lepiej zapytać na wszelki wypadek.

Wiem, że mogę utworzyć użytkownika tylko do odczytu (dodatkowa złożoność) lub ukryć adres URL S3 za działaniem kontrolera w mojej własnej aplikacji internetowej (wymaga 2 łącznej liczby żądań, aby załadować każdy obraz, co powoduje, że jest on nieefektywny), ale chciałbym raczej dowiedz się, czy moje obecne podejście jest bezpieczne, czy nie, zanim skorzystam z któregokolwiek z nich.

Dziękuję za poświęcony czas. :)

Odpowiedz

2

Jeśli twój podpisany URL ma uprawnienia PUT lub DELETE, ktoś może spróbować uzyskać podpis + AccessKeyId, aby zastąpić lub usunąć obiekt.

Po prostu make sure że podpisujesz adres URL z uprawnieniami tylko do odczytu i domyślam się, że jesteś dobry.

Powiązane problemy