Nie*_*sol 11 html javascript image cross-domain cors
为了保护我的用户生成的内容免受这种潜在的"利用",我添加crossorigin="anonymous"
到所有[img]
BBCode.
嗯,它在IE11中工作:当我测试漏洞利用时,图像不再触发验证对话框(已禁用缓存和不同的URL进行测试以获得良好的衡量标准).
但在Chrome中,漏洞利用不起作用......因为图像根本没有被加载.相反,我得到了明显相当常见的错误:
来自"XXXXX"的图像已被跨源资源共享策略阻止加载:请求的资源上没有"Access-Control-Allow-Origin"标头.因此不允许原点'YYYYY'进入.
也许我的理解是错误的,但我认为"anonymous"
属性的价值可以让它发挥作用.
我错过了什么,如果有的话还有什么其他选择可以防止这个问题?
boz*_*mob 13
首先,根据我的理解,你的意思是说图像没有在IE中加载.哪个是完美的!这就是它必须如何工作.
其次(最后),Chrome的行为也很完美.
流程/详细信息:
服务器不向原始站点提供凭据(通过将Access-Control-Allow-Origin设置为匿名),图像将受到污染并且其使用受到限制.
现在,如果您有一个跨原始图像,您可以将其复制到画布中,但这会"污染"画布,这会阻止您阅读它(因此您无法"窃取"或"下载"图像).但是,通过使用CORS,存储图像的服务器可以告诉浏览器允许跨源访问,因此您可以通过画布访问图像数据.
当标头不是来自同一个源时,即,如果在没有CORS请求的情况下获取资源(即没有发送Origin:HTTP标头),并且当它变为无效时,则处理它就好像使用了枚举关键字anonymous一样.
所以我的猜测是null无论是不存在还是无效,在这种情况下它会像匿名一样处理.
所以,你看到Chrome中的错误意味着正在做IE正在做的事情.
一些可以帮助的参考资料 -
虽然不是直接的答案,但是,有用的链接 -
希望能帮助到你!:)快乐的编码!
归档时间: |
|
查看次数: |
11996 次 |
最近记录: |