IE中限制flash访问document对象的一个bug
2008-11-10 13:26
253 查看
虽然IE备受批评,但是从某些安全性上来说,IE还是做的挺不错的。 比如IE中iframe拦截本地cookie,IE在iframe里实现一个security属性。这些特性都是FF没有的。 而今天则看到了另外一个安全问题。 在浏览器里,如果直接访问某个swf文件,浏览器会自动加上embed标签。 比如,直接访问 http://www.fvck.com/svck.swf 那么, 对于FF(Firefox 3.0.3测试),页面源代码为: <embed height="100%" width="100%" name="plugin" src="http://www.fvck.com/svck.swf" type="application/x-shockwave-flash"/> 对于IE(IE7测试),会自动调用res://mshtml.dll/objectembed_neutral.js 来生成页面,页面代码为 <html><head><script src="res://mshtml.dll/objectembed_neutral.js"></script></head><body objectSource="http://www.fvck.com/svck.swf" leftmargin=0 topmargin=0 scroll=no> <form id="objectDestination"></form> </body></html> 注意到,这两个页面的embed标签里面,都没有设置allowScriptAccess属性的值。 在 Flash 8 以后, allowScriptAccess 默认值是 sameDomain ,我的flash版本是 9.0.124 ,所以在这里应该也是 sameDomain,就是说,svck.swf可以访问当前html里的js和DOM对象 在IE里,认为这样自动化生成的页面是不怎么安全的,所以IE做了一件事情,就是限制这个flash访问当前窗口的document 对象 这本来是很好的,但是IE居然存在这样一个bug (存在IE6 /IE7 / IE8 Betas 中): 刷新一次页面后,原本被限制访问的document对象,居然可以访问了! 简单的F5刷新页面后: 对于Firefox ,则更不堪,从一开始就没有做任何限制 那么,如何利用这个特性,或者说是bug? 在flash的as 脚本中,直接调用 window.location.reload(); 刷新当前页面,就可以访问当前页面的document对象了。 在这里,还可以在AS中通过捕获访问docuemnt的异常来判断浏览器是否是IE,也算是一种fingerprint。 该Bug发现者的原文在这里 |
相关文章推荐
- IE框架中访问不同域的网页不能带入COOKIE————是IE浏览器的一个BUG?
- 一个Flash中通过AS3代码的Loader对象加载另一个SWF文件,并访问其中的文档类中的方法。
- IE框架中访问不同域的网页不能带入COOKIE————是IE浏览器的一个BUG?(转)
- IE框架中访问不同域的网页不能带入COOKIE————是IE浏览器的一个BUG
- IE框架中访问不同域的网页不能带入COOKIE————是IE浏览器的一个BUG?
- [置顶] PHP5 面向对象的一个新疑惑点,类对象实例竟然能访问类中私有方法,不知道是不是bug
- IE框架中访问不同域的网页不能带入COOKIE————是IE浏览器的一个BUG?
- 限制用户访问数据库另外一个用户的对象,reference how to clone user privileges [ID 473317.1]
- 原生js在IE7下 向dom添加节点的一个bug, (本例为添加hidden input)
- 查到的一个限制只能手机访问的封装类
- 一个关于临时对象的BUG
- json笔记-jsoncpp一个全局对象的bug
- 由于一个或多个对象访问此列
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- IE本地存储userdata的一个bug?
- PostgreSQL的.NET驱动程序Npgsql中参数对象的一个Bug
- 取消IE“已限制此网页运行可以访问计算机的脚本“
- SQL Server不存在或访问被拒绝 Windows里的一个bug
- 解决JQUERY在IE下将字符串转成XML对象时产生的BUG
- 怎么限制一个类的对象实例,只能在"堆"上分配,或者只能在"栈"上分配