我正在製作一個應用程序,它使用S3來存儲很多用戶媒體,然後在稍後顯示給用戶。我試圖找出最好和最安全的方法來完成這一點。S3和Web應用程序
我讀過在S3中存儲媒體,然後使用S3中的url加載媒體可能是一個不好的選擇,因爲它可能暴露出您可能不想公開的信息。在S3上下載所有媒體到服務器之前是否正確?如果我必須從那裏下載媒體才能顯示它,那麼它似乎就會首先破壞S3的目的。
完成此操作的最佳做法是什麼?
我希望有一點建議。
謝謝!
我正在製作一個應用程序,它使用S3來存儲很多用戶媒體,然後在稍後顯示給用戶。我試圖找出最好和最安全的方法來完成這一點。S3和Web應用程序
我讀過在S3中存儲媒體,然後使用S3中的url加載媒體可能是一個不好的選擇,因爲它可能暴露出您可能不想公開的信息。在S3上下載所有媒體到服務器之前是否正確?如果我必須從那裏下載媒體才能顯示它,那麼它似乎就會首先破壞S3的目的。
完成此操作的最佳做法是什麼?
我希望有一點建議。
謝謝!
有很多不同的方式來使用S3。沒有一個「最佳做法」。
即成通過web服務器的所有內容:
在這種情況下,S3只是用來作爲存儲介質。通過網絡服務器請求內容,然後從S3下載內容並將內容轉發給客戶端。
在這種情況下,客戶端不知道S3存儲桶。
這並不能擊敗S3的目的,因爲S3的目的(在這種情況下)是內容存儲,而不是交付。
即成從公共S3存儲內容:
在這種情況下,您設置您的S3桶直接服務了內容。在這種情況下,所有內容都是公開的,因此使用直接鏈接到來自Web應用程序的內容。任何人都可以下載S3存儲桶中的所有內容。
該存儲桶可以被稱爲bucket.s3-website.amazonaws.com,或在您自己的域下。
這種情況有一個好處,它可以減輕您的Web服務器內容的傳送。
即成從私人S3存儲內容:
在這種情況下,你的水桶是私有的,但你還是直接服務了內容。使用此係統,您可以創建到期的預簽名URL以保護私人內容。內容直接從S3下載,但並非所有內容都可以由所有人下載。
和前面的場景一樣,這種場景的好處是可以減輕網絡服務器內容的傳送。
CloudFront的:
您可以使用CloudFront的在您的應用程序和/或S3桶前做任何以下內容:
最後的想法:
您選擇的設置取決於您的應用程序。
默默無聞的安全(也就是希望人們沒有找到某些信息)並不是一種好的安全形式。不管人們知道什麼信息(例如文檔的文件夾結構),系統的設計應該是安全的。通過簽名URL提供內容將保證文件的安全性,即使有人知道存儲結構。 –