2014-03-13 61 views
2

我读过关于使用s3 + cloudfront +签名URL架构安全地向公共用户提供私人内容的aws文档。但对我来说似乎还不够安全。让我们分步描述:安全地提供私人内容s3 + cloudfront +签名URL

第1步:用户登录到我的网站。

第2步:用户点击下载(PDF,图片等)

第3步:我的Web服务器将生成标识的URL(截止时间:30秒),将用户重定向到标识的URL和下载过程发生。

步骤4:现在,即使在30秒后超时,仍然有可能我的网络上的任何恶意snipper都能够捕获签名的url并下载我的用户的私人内容。

有没有想过这个?

回答

2

无论您使用何种机制来“保护”网络上的任何内容,如果您不是使用HTTPS加密您的用户与网站的交互,您预期会存在风险。

如果没有加密,登录信息或者传达用户身份验证状态的cookie也会以明文形式发送,用户下载的任何内容都可以直接捕获,而无需签名链接......关注获取下载通过嗅探链接似乎有点无趣,相比之下,这种设置中存在的一般和整体不安全的更重要的风险。另一方面,如果您的网站使用的是SSL,那么当您向用户提供签名的URL时,有合理的期望,它将被加密窥探......以及类似地,如果链接到S3也使用HTTPS,在新的连接上的SSL建立之前浏览器通过电线传输任何信息,这将通过嗅探发现。因此,尽管这种机制涉及潜在的安全问题似乎是正确的,但我建议用户交互安全的有效整体方法应该将任何S3签名的URL特定问题的影响降低到一个级别相当于允许浏览器基于拥有一组证书请求资源的任何其他机制。

+0

事实上,我应该已经表明,所有的沟通都是通过HTTPS。现在担心的是无论谁获得签名的URL,无论到期时间,都可能能够下载我的私人文件。机会很渺茫,但这是可能的。我检查了Dropbox的方法,实际上他们仍然通过他们的网络服务器提供服务,而不是直接通过签名的URL。因此添加了另一个安全层。 – Tommy

+0

的确如此,拥有网址意味着访问内容,如拥有浏览器cookies或用户密码。通过您的网络服务器流式传输文件虽然效率低下,但并不像有些人那样糟糕,因为AWS不会为同一区域内的S3和EC2之间的带宽收费(所以向您的服务器的传输是有效的“免费”)并将文件从网络传输到网络使用的资源(网络)比从传统的Web服务器(磁盘)下载文件更少。关键概念是流,而不是取/发。 –