【发布时间】:2012-05-08 18:00:23
【问题描述】:
我正在使用uploadify 上传图片,但我很快意识到,SWF 对象与浏览器共享的会话不同。
我认为我需要会话的原因是确保“黑客”不能以其他用户的名义上传图像,或覆盖其他用户的图像。我希望每张图片对上传者都是 100% 私有的
这是我看到的选项
- 将会话 ID 与上传一起添加到请求中
-
使用一些密码学来
- 生成一个随机但难以伪造的图像ID (例如,使用用户 id 和秘密 + 随机 UUID 签署令牌服务器端,
- 而不是将其保存在将用户标识符映射到该令牌的表中(令牌是图像ID)
- 然后将其传递给 UI,
- SWF 对象会将此令牌传递给服务器,我可以在其中验证它来自服务器并且未被用户篡改
- 然后在表中查找该标记,将图像字节保存在具有该标记的占位符下。 (我需要希望这个令牌永远是全球唯一的,我不确定这在统计上是否 100% 正确,或者是吗?如果我有一个万亿重复的图像 id,我可以上传失败和强制用户再试一次,对吗?
其他一些我没有想到的更简单的选项(例如,非 SWF 解决方案,例如 ajax 解决方案?或者只是忘记进度条,以我们当前的带宽,这是不值得的,大多数用户甚至都不会看到它)
只使用一个 GUID,很难猜到,如果有人设法猜到另一个用户的 GUID(例如会话 id)而不是让他享受覆盖别人的图像的乐趣,这并不是他们偷了他们的信用卡对吗?
问题
- 我可以使用选项 1 吗?安全吗?
- 如果不是,那么选项 2 可以吗?是太多还是太少?它是在重新发明轮子吗?有没有更简单的方法来获得无会话安全图像上传,以证明发件人无法从客户端伪造?
- 或者也许有不需要 SWF 作为进度条的 AJAX 解决方案?
【问题讨论】:
-
我正在远离 SWF...现在尝试:blueimp.github.com/jQuery-File-Upload
标签: security file-upload cryptography image-uploading asyncfileupload