【问题标题】:Amazon AWS S3 - Allow Pre-signed Expired URL to workAmazon AWS S3 - 允许预签名过期 URL 工作
【发布时间】:2017-09-30 03:50:09
【问题描述】:

如果您给某人一个 AWS S3 Pre-signed URL with Expiration(现在已过期),您是否可以更改文件元数据或 AWS 中的某些设置以忽略过期并允许文件访问该 URL特定文件(我想它与公开文件有一些相似之处,但即使将文件设置为公开,当您传入 Expiration 参数时,它也会拒绝访问,因为它已过期,我需要传入 Pre -签名的参数,例如 AWSAccessKey/Expiration/Sig,因为它是原始的。)

我的问题是,外部开发人员获得了一个 AWS S3 预签名 URL(不是我认为可以重定向的 AWS S3 托管网站)嵌入到他们的应用程序和该应用程序的旧版本中在野外,应用程序无法从 S3 检索内容,因为 url 已过期。我们不再这样做了,但是对于仍然存在的旧版本,我们是否可以让过期的 url 再次工作?

谢谢!

【问题讨论】:

    标签: amazon-s3


    【解决方案1】:

    没有允许使用过期的预签名 URL 的解决方法。

    将对象公开并没有帮助,因为如果提供了凭据,则会在根据凭据检查对象的权限之前检查它们的有效性。

    验证签名的第一步是检查 ExpiresX-Amz-ExpiresX-Amz-Date 的增量,具体取决于签名算法,以查看 URL 是否已过期。

    这是在检查凭据的有效性之前完成的 单独基于到期时间。

    更改过期时间无济于事,因为签名的 URL 不会被篡改(从技术上讲,它在计算上是不可行的)——因此将过期时间更改为未来会导致签名无效,因为过期时间戳是一部分签名算法的输入。

    这是做不到的。

    【讨论】:

    • 感谢 Michael 的详细回复。我什至在发布问题之前也认为这也是正确的,但只是想确保没有办法在文件上覆盖它(比如在将身份验证设置为不使用的文件上有一个布尔元标记 key/val ,检查文件是否存在,如果默认标记为 false,则检查这些参数。)请注意我的回复中有关身份验证的另一篇文章的更多详细信息:security.stackexchange.com/questions/113210/…
    • @user1178516 对——在对象级别没有可能的覆盖,因为似乎在服务到达检查相关对象是否存在之前,过期的签名就被拒绝了。你注意到了,我想,我也是你引用的另一个问题的公认答案的作者。
    • 嗨迈克尔,是的,我注意到了,但由于我的字符用完了,无法对此发表评论,但您的回复也非常详细和有用,再次感谢您的帮助!
    猜你喜欢
    • 2018-12-27
    • 2016-03-10
    • 2021-10-18
    • 1970-01-01
    • 2018-04-02
    • 2021-07-25
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多