1

我正在製作一個應用程序,它使用S3來存儲很多用戶媒體,然後在稍後顯示給用戶。我試圖找出最好和最安全的方法來完成這一點。S3和Web應用程序

我讀過在S3中存儲媒體,然後使用S3中的url加載媒體可能是一個不好的選擇,因爲它可能暴露出您可能不想公開的信息。在S3上下載所有媒體到服務器之前是否正確?如果我必須從那裏下載媒體才能顯示它,那麼它似乎就會首先破壞S3的目的。

完成此操作的最佳做​​法是什麼?

我希望有一點建議。

謝謝!

+2

默默無聞的安全(也就是希望人們沒有找到某些信息)並不是一種好的安全形式。不管人們知道什麼信息(例如文檔的文件夾結構),系統的設計應該是安全的。通過簽名URL提供內容將保證文件的安全性,即使有人知道存儲結構。 –

回答

0

有很多不同的方式來使用S3。沒有一個「最佳做法」。

即成通過web服務器的所有內容:

在這種情況下,S3只是用來作爲存儲介質。通過網絡服務器請求內容,然後從S3下載內容並將內容轉發給客戶端。

在這種情況下,客戶端不知道S3存儲桶。

這並不能擊敗S3的目的,因爲S3的目的(在這種情況下)是內容存儲,而不是交付。

即成從公共S3存儲內容:

在這種情況下,您設置您的S3桶直接服務了內容。在這種情況下,所有內容都是公開的,因此使用直接鏈接到來自Web應用程序的內容。任何人都可以下載S3存儲桶中的所有內容。

該存儲桶可以被稱爲bucket.s3-website.amazonaws.com,或在您自己的域下。

這種情況有一個好處,它可以減輕您的Web服務器內容的傳送。

即成從私人S3存儲內容:

在這種情況下,你的水桶是私有的,但你還是直接服務了內容。使用此係統,您可以創建到期的預簽名URL以保護私人內容。內容直接從S3下載,但並非所有內容都可以由所有人下載。

和前面的場景一樣,這種場景的好處是可以減輕網絡服務器內容的傳送。

CloudFront的:

您可以使用CloudFront的在您的應用程序和/或S3桶前做任何以下內容:

  1. 緩存中的內容,加快全球交付,
  2. 保護您的網絡服務器,並配合WAF

最後的想法:

您選擇的設置取決於您的應用程序。

+0

感謝您的詳細解答。公衆欄最大的擔憂之一是隻需右鍵點擊媒體即可訪問可能包含最好不公開的網址的網址。如果我使用pre-signedURL,是否會幫助或成爲CloudFront創建更多蒙版url的唯一方法? – ackerchez

+0

預先登記的網址不會掩蓋結構。 CloudFront可能會掩蓋某些結構。使用你自己的服務器可以完全掩蓋它。 –

+0

在您使用自己的服務器掩蓋結構的設置中,這將如何工作? – ackerchez

相關問題