Security 通过网络加密Amazon S3 URL以保护数据访问

Security 通过网络加密Amazon S3 URL以保护数据访问,security,encryption,https,amazon-s3,man-in-the-middle,Security,Encryption,Https,Amazon S3,Man In The Middle,我希望在AmazonS3存储桶上托管受版权保护的数据(拥有比我的服务器能够处理的更大的可用带宽),并为大量授权客户端提供对这些受版权保护的数据的访问 我的问题是: 我在服务器端为这些资源创建签名过期HTTPS URL 这些URL通过HTTPS连接发送到客户端 当客户端使用这些URL下载内容时,中间的任何人都可以清楚地看到URL 详细地说,URL是通过RubyonRails服务器使用FogGem创建的。 我说的移动客户端是iOS设备。 我在测试中使用的代理是mitmproxy 我生成的URL如

我希望在AmazonS3存储桶上托管受版权保护的数据(拥有比我的服务器能够处理的更大的可用带宽),并为大量授权客户端提供对这些受版权保护的数据的访问

我的问题是:

  • 我在服务器端为这些资源创建签名过期HTTPS URL
  • 这些URL通过HTTPS连接发送到客户端
  • 当客户端使用这些URL下载内容时,中间的任何人都可以清楚地看到URL
详细地说,URL是通过RubyonRails服务器使用FogGem创建的。 我说的移动客户端是iOS设备。 我在测试中使用的代理是mitmproxy

我生成的URL如下所示:


我不是一名网络或安全专家,但我发现一些资源表明,通过HTTPS连接没有任何问题(例如,cf.)。是我的测试配置错误导致了这个清晰的URL吗?有没有关于这里可能出了什么问题的线索?我真的有可能阻止S3URL通过网络清除吗?

因此,首先,当通过SSL发送请求时,所有参数都是加密的。如果你要查看通过普通代理的流量,你将无法读取它们

但是,许多代理允许通过创建虚拟证书来拦截SSL数据。这正是mitmproxy所做的。您可能已经启用了此功能,但没有意识到(尽管您必须安装客户端证书才能做到这一点)

底线是,你的AWS URL很容易被那些想对你的应用程序进行反向工程的人截获,可以通过代理,也可以点击二进制文件本身。然而,这本身并不是一件“坏事”:亚马逊自己知道会发生这种情况,这就是为什么他们不直接在URL本身中发送密钥,而是使用签名

我不认为这对你来说是一个大问题:毕竟,你正在创建过期的URL,所以即使有人可以通过代理获得它们,他们也只能访问有效的URL。要在过期后访问您的资源,需要直接访问您的密钥。现在,事实证明这并非不可能(因为您可能已经将其硬编码到二进制文件中),但这已经足够困难,大多数用户都不会为此烦恼


我鼓励您在安全性和版权保护方面采取实际行动:当您拥有客户端本机代码时,问题不在于它是否被破坏,而在于它何时被破坏。

事实上,我记得一年前为mitmproxy安装了一个虚拟证书。谢谢你的回答。