前端之家收集整理的这篇文章主要介绍了
php – Amazon S3为每个对象创建唯一键,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的应用
用户将他们的
文件上传到一个存储桶如何确保S3存储桶中的每个对象都有唯一的密钥以防止对象被覆盖?
目前我在我的PHP脚本中使用随机字符串加密文件名,然后将文件发送到S3.
为了便于讨论,我们假设上传者找到了一种在上传时操纵文件名的方法.他想用banana的图片替换我网站上的所有图像.如果加密失败,有什么方法可以防止在S3中覆盖文件?
编辑:我认为版本控制不起作用,因为我在显示来自我的存储桶的图像时无法在图像URL中指定版本ID.
你在加密或散列吗?如果您使用的是md5或sha1哈希,攻击者可以轻松找到哈希冲突并让您在香蕉皮上滑倒.如果您在没有
随机初始化向量的情况下进行加密,攻击者可能会在
上传几百个
文件后推断出您的密钥,而加密可能不是最好的
方法.它计算成本高,难以实现,您可以轻松地为此工作获得更安全的机制.
如果你为每个文件名添加一个随机字符串,使用一个相当可靠的熵源,你应该没有任何问题,但你应该检查文件是否已经存在.虽然编写一个循环来检查,使用S3 :: GetObject,并生成一个新的随机字符串似乎需要付出很多努力来完成几乎不需要运行的东西,“几乎从不”意味着最终发生的概率很高.