2017-09-20 40 views
5

我一直在試圖找到這個問題的答案現在幾個小時,但還沒有設法得出一個決定性的答案。我希望這裏有人能夠闡明我的問題。考慮下面的實施例AWS S3 URL:在Web應用程序中暴露AWS S3簽名的URL?

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

以我具體例如,URL是到S3其中我在一個HTML img標記直接暴露觀看圖像的請求,並且在AMZ用戶-Credential具有讀取和寫入權限。該網址也設置爲在10分鐘內過期。

是否可以直接通過此URL鏈接到圖像,或者有可能在這10分鐘內,來自此URL的簽名可用於惡意製作的REST請求中,以刪除或修改圖像,而不是觀看它?

我懷疑不同的動作會有不同的簽名,這使得這個不可能,但鑑於我對AWS auth的理解非常有限,我認爲最好問一下以防萬一。

我知道我可以創建一個只讀用戶(額外的複雜性)或隱藏S3 URL後面我自己的web應用程序的控制器操作(需要2個總請求加載每個圖像,使之成爲低效率的),但我會而是要求在採取這些措施之前,先了解我目前的方法是否安全。

謝謝你的時間。 :)

回答

2

如果您的預簽名url具有PUT或DELETE權限,則某人可能會嘗試讓Signature + AccessKeyId覆蓋或刪除您的對象。

只是make sure你正在用只讀權限對url進行簽名,我猜你很好。