西瓜刀

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

通过脚本触发file.click()方法,只有在IE中会造成拒绝访问,而MDN上还有教程指导开发者怎么用click方法触发隐藏的file控件。

网上的说法是IE的安全限制导致的,例如,我的本意是要让用户触发页面中name为A的file控件,但是攻击者通过某种方式屏蔽了我的触发代码,转而使用他自己的触发代码,触发了另一个域中的file控件,然后弹出了一个文件选择框;接着用户在本机选了一些敏感文件,比如昨晚的艳照然后提交,然后你懂的……

所以IE的做法很简单,只有用户明确点击了file控件,此时选中了的文件才可以上传。

Ajax表单提交插件FineUploader,当用户使用IE9-浏览器时会自动使用Form方式构造file控件,然后,它很牛B地把file透明化盖在原有的按钮上,当你点击按钮时实际上点击的是file控件。这种方式在IE的一些版本会造成视觉上的问题,例如点击时文字下沉了一下,不知者可能会当作BUG拼命调试,然后砸掉键盘说这坑爹玩意浪费了我9美元……

posted on 2013-01-10 21:51  西瓜刀  阅读(1080)  评论(0编辑  收藏  举报