无论如何,如果您向某人发送了带有过期的AWS S3预签名URL(现已过期),您可以更改文件元数据或AWS中的某些设置以忽略过期并允许文件访问特定文件(我想它会使文件公开,但即使将文件设置为公共,当你传入Expiration param时,它会拒绝访问因为它已经过期而我需要传入Pre -designed params,例如AWSAccessKey / Expiration / Sig,因为它是opriginally。)
我的问题是外部开发人员获得了AWS S3预签名URL(我认为我可以进行重定向的AWS S3托管网站)以嵌入他们的应用程序以及该应用程序的旧版本在野外,应用程序无法从S3检索内容,因为网址已过期。我们不再这样做了,但对于那些仍在那里的旧版本,我们是否仍然可以让过期的网址再次运行?
谢谢!
答案 0 :(得分:0)
没有解决方法可以使用已过期的预签名网址。
使对象公开没有用,因为如果提供了凭据,则会在根据凭据检查对象的权限之前检查它们的有效性。
验证签名的第一步是检查来自Expires
的{{1}}或X-Amz-Expires
delta,具体取决于签名算法,以查看该网址是否已过期。
这是在检查凭据的有效性甚至存在之前完成的 - 所以带有完全虚构的凭据和/或无效签名的过期URL仍将被拒绝过期,基于到期时间,单独。
更改过期时间没有帮助,因为签名的URL不受篡改(从技术上讲,它在计算上是不可行的) - 因此将过期时间更改为将来将导致签名变为无效,因为到期时间戳是一部分签名算法的输入。
这不可能。