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

相关问题