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