Amazon S3 为每个对象创建唯一的密钥

2023-11-25

我的应用程序用户将他们的文件上传到一个存储桶。如何确保 S3 存储桶中的每个对象都有唯一的密钥以防止对象被覆盖?

目前,在将文件发送到 S3 之前,我正在使用 php 脚本中的随机字符串对文件名进行加密。

为了便于讨论,我们假设上传者找到了一种在上传时操作文件名的方法。他想用一张照片替换我网站上的所有图像banana。如果加密失败,有什么好方法可以防止覆盖 S3 中的文件?

编辑:我认为版本控制不起作用,因为在显示存储桶中的图像时,我无法在图像 URL 中指定版本 ID。


你是加密还是散列?如果您使用 md5 或 sha1 哈希值,攻击者可以轻松发现哈希冲突并让您踩到香蕉皮滑倒。如果您在没有随机初始化向量的情况下进行加密,则攻击者可能能够在上传数百个文件后推断出您的密钥,并且加密可能不是最好的方法。它的计算成本很高,难以实现,而且您可以用更少的努力获得更安全的机制来完成这项工作。

如果您使用相当可靠的熵源在每个文件名前面添加一个随机字符串,那么您应该不会有任何问题,但您应该检查该文件是否已经存在。虽然编写了一个循环来检查,但使用S3::GetObject,并生成一个新的随机字符串对于几乎永远不需要运行的事情来说似乎需要付出很大的努力,“几乎从不”意味着它最终发生的可能性很高。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Amazon S3 为每个对象创建唯一的密钥 的相关文章