4

我想在 Amazon S3 存储桶上托管受版权保护的数据(以提供比我的服务器可以处理的更大的可用带宽)并为大量授权客户提供对这些受版权保护数据的访问。

我的问题是:

  • 我在服务器端为这些资源创建签名过期 HTTPS URL
  • 这些 URL 通过 HTTPS 连接发送到客户端
  • 当客户端使用这些 URL 下载内容时,任何中间人都可以清楚地看到该 URL

具体来说,URL 是通过 Ruby On Rails 服务器使用雾 gem 创建的。我所说的移动客户端是 iOS 设备。我用于测试的代理是 mitmproxy。

我生成的 URL 如下所示:

https://mybucket.s3.amazonaws.com/myFileKey?AWSAccessKeyId=AAA&Signature=BBB&Expires=CCC

我不是网络或安全专家,但我发现资源表明 HTTPS 连接没有任何内容可以清除(例如,参见HTTPS 标头是否加密?)。是不是我的测试配置错误导致了这个清晰的 URL?关于这里可能出了什么问题的任何提示?我真的有可能阻止 S3 URL 通过网络清除吗?

4

1 回答 1

4

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

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

最重要的是,您的 AWS URL 很容易被想要对您的应用程序进行逆向工程的人截获,无论是通过代理还是通过利用二进制文件本身。然而,这本身并不是一件“坏事”:亚马逊自己知道会发生这种情况,这就是为什么他们不直接在 URL 本身中发送密钥,而是使用签名。

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

我鼓励您在安全和版权保护方面保持现实:当您拥有客户端本机代码时,问题不在于它是否被破坏,而在于.

于 2013-01-29T11:37:14.913 回答