我已经阅读了关于使用s3 + cloudfront +签名URL架构来安全地向公共用户提供私有内容的文档。但是对我来说似乎不够安全。让我按步骤描述:
第1步:用户登录我的网站。
第2步:用户点击下载(pdf,图片等)
步骤3:我的网络服务器将生成签名的URL(到期时间:30秒),将用户重定向到签名的URL并进行下载过程。
步骤4:现在,即使它在30秒后超时,我网络上的任何恶意代码仍然有可能捕获已签名的网址并下载我用户的私人内容。
有没有想过这个?
答案 0 :(得分:2)
如果您还使用HTTPS加密用户与网站的互动,无论您使用何种机制来“保护”网络上的任何内容,您预计会存在风险。< / p>
如果没有加密,登录信息或传达用户身份验证状态的cookie也会以明文形式发送,用户下载的任何内容都可以直接捕获而无需签名链接...关注捕获下载链接与这种设置中存在的一般和整体不安全的更大风险相比,通过嗅探似乎有点无趣。
另一方面,如果您的网站使用的是SSL,那么当您将签名的URL传递给用户时,可以合理地期望它会被加密隐藏起来......而且,类似地,如果链接S3也使用HTTPS,在之前建立新连接上的SSL 浏览器通过线路传输任何可通过嗅探发现的信息。
因此,尽管这种机制存在潜在的安全问题似乎是正确的,但我建议用户交互的安全性的有效整体方法应该将任何S3签名的URL特定问题的影响降低到可比较的水平允许浏览器基于拥有一组凭证来请求资源的任何其他机制。