这个问题最初的发现和基本描述,请参看我的另一篇随笔 Chrome在解析html时的一个bug
今早看到几篇回复,觉得大家还是很关注这个问题。其实我最初只是做容错测试,但是chrome对属性值是不处理直接复制到等号左面,而且再次解析的时候,html结构会收到这个新属性名的影响。这时候我其实关心的并不是chrome对html的容错了,而是浏览器的安全问题。
时间有限,我没有做更深入的测试,仅仅是利用这个bug(或者随便叫什么吧),在一个普通div标签的属性中插入了一个js标签;而chrome一点也没含糊,如期将该标签解析出来,并执行了里面的代码。
<div ="><script>for(i=0;i<3;i++)alert(i)</script>">I'm a div!</div>
请看chrome的解析
<div><script>for(i=0;i<3;i++)alert(i)</script>">I'm a div!</div>
附图:
也可以用iframe
<div ="><iframe src=http://www.baidu.com">I'm a div</div>
IE6/FF3.6.8测试无问题,在这两个浏览器中该错误属性均被忽略。