2012-10-18 30 views
8

我正在構建一個Web應用程序,並且正在研究如何使用Amazon S3來存儲用戶上傳。亞馬遜S3下載如何處理安全

我擔心的是,我不希望用戶A看到他上傳的文檔的下載鏈接是urltoMyS3/doc1234.pdf,並嘗試使用urltoMyS3/doc1235.pdf並獲取其他用戶文檔。

我能想到的唯一方法是做到這一點,只允許Web應用程序連接到S3,然後檢查用戶是否有權訪問Web應用程序上的文件,讓Web應用程序下載文件,然後將其提供給客戶。這種方法的問題是應用程序必須首先下載文件,並不可避免地減慢用戶的下載過程。

通常用Amazon S3處理用戶文件的方式如何?或者它通常不是在文件不應該公開的場景中使用的?有沒有另外一種服務呢?

感謝

回答

8

您可以實現Query String Authentication,這將解決您的問題。

查詢字符串驗證是給予那些通常需要認證的資源HTTP或瀏覽器訪問 有用。查詢字符串中的 簽名可確保請求的安全。查詢字符串 身份驗證請求需要到期日期。您可以指定 以epoch或UNIX時間(1970年1月1日以來的秒數 )的任何未來到期時間。

+1

僅供參考,您的鏈接會重定向到一個通用的歡迎頁面。 –

0

如果有時間限制的身份驗證將不工作(在其他的答案的建議)。您可以考慮實施類似s3fs的操作來將S3存儲桶作爲驅動器掛載到Web應用程序服務器上。通過這種方式,您可以簡單地進行身份驗證,然後直接向用戶提供文件,而不需要他們知道該文件駐留在S3中。同樣,您可以直接將上傳的文件寫入此s3fs掛載。

S3fs還允許您在計算機上配置S3目錄的本地緩存以加快訪問速度。

這在集羣Web服務器環境中也可以很好地工作,因爲您可以讓每個服務器獨立安裝s3fs驅動器並對其執行讀/寫操作。

A link with more info