2014-03-12 67 views
0

我有一個S3存儲桶,其中包含要與網站用戶共享的對象。我知道我可以使用類似Query String Authentication的東西來提供對這些對象的安全訪問,但是如果我讓每個對象都是公開可讀的,但隱藏在包含密碼強的隨機數的複雜密鑰(即URL)後面呢?如果包含的桶不允許列出對象,那麼就沒有辦法猜測或發現這些URL了,對嗎?還是有一些我可以忽略的安全漏洞?附註:我的第一個想法是在鍵中使用UUID,但是我已經知道它們顯然可以被預測,前面幾個例子給出了。也就是說,我不瞭解這可以做多容易。如果它不平凡,我可能不會太擔心使用它們而不是一個強大的隨機數...帶有隨機密鑰的公共S3對象的安全性

回答

0

問題是,如果曾經共享的URL進入另一個用戶的手中(通過共享說) 。如果你確保URL保持足夠的祕密,這種方法沒問題(比如你通過https返回給用戶的URL,這個用戶不會共享它)。

這裏的任何漏洞都會導致一個安全漏洞 - 這裏基於查詢字符串的簽名方案是有幫助的,因爲簽名會在固定時間後過期,因此任何重新共享都不會對您造成傷害。

您可以使用UUID(確保它們不會最終重複,如果新發生碰撞,請重新生成另一個)。它們可能與任何其他8字母密碼一樣難以猜測(或更多)。

0

要做你想做的事情的標準方法是爲你想分享的每個對象生成pre-signed URLs。如果你使他們的壽命短,那麼他們不能在這段時間之外共享。所有的AWS-provided SDKs都支持這個功能。