1

AWS Cloudfront 签名的 url问题:我想知道使用公开可见的密钥与他们的 IP 地址来逐个用户控制 Cloudfront 内容访问的利弊。我将公钥定义为任意访问令牌(例如,我分配给每个用户的公钥或 ID )作为查询参数(下图中的第 3 部分,取自文档。用户 IP 地址可以很容易地在服务器端获得(使用 PHP 使用 $_SERVER['REMOTE_ADDR'])并且是在“ Policy=”中编码的值,即图片中的第 4 部分。

Cloudfront 签名 URL 示例

由于人们越来越多地拥有许多计算机并属于许多网络,因此基于 IP 地址的访问似乎不是一种最佳方法,这意味着每个用户都需要拥有多个策略,而我必须跟踪这些策略中的每一个。

另一方面,public key如果字符串更难知道,基于查询字符串的访问可能会被简单的剪切和粘贴或暴力破解。

AWS 推荐基于 IP 的方法并且不推荐公钥方法肯定是有原因的,但是如果不是出于某种访问令牌的目的,我无法理解查询参数的意义。想法?

新手的背景: Cloudfront 签名的 url 允许限制对服务器(在文档中称为“源服务器”)上的内容的访问,例如您的 S3 存储桶。这些签名的 url 可以自定义(称为“自定义策略”,Policy="eyANC.."上面 url 的一部分)以包含用户 IP 地址,这样如果您不使用该 IP 地址,您将无法访问内容。

4

1 回答 1

2

据我了解,以下可能是选择 IP 地址作为策略一部分的原因。

  1. 从 ip 地址,几乎可以保证收到签名 url 的用户是发出签名 url 请求的同一用户。(我说几乎可以保证,考虑到插入 ip-address 的服务器代码应该知道代理 x-forwarded-for 标头这一事实。远程 ip 地址对于同一家/办公室中由同一提供商提供服务的每个人来说都是相同的)

  2. 通常,在现实世界的情况下,签名 url 的到期时间很短。(意味着,在您的签名到期之前,您的 IP 地址不会更改。

  3. 使用 ip 地址还有一个好处,您可以使用过滤器阻止已知代理用户、地理位置和安全风险提供商。(一般称为ip白名单/黑名单)

于 2014-08-13T06:55:14.387 回答