我正在制作一个应用程序,它使用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提供内容将保证文件的安全性,即使有人知道存储结构。 –