Firefox是一款开放源码的WEB浏览器。 Firefox的Range对象中存在空指针引用问题,成功利用这个漏洞的攻击者可以导致浏览器崩溃。 可以使用selectNode方式初始化Range对象选择将要注入Range中的节点,也可以使用createContextualFragment方式创建文档碎片,如下所示: var tagString = \"<div>I am a div node</div>\"; var range = document.createRange(); range.selectNode(document.getElementsByTagName(\"div\").item(0)); var documentFragment = range.createContextualFragment(tagString); document.body.appendChild(documentFragment); 可见使用createRange文档方式创建了一个范围,然后对当前文档中的一些元素使用了selectNode方式初始化范围。这时就可以使用createContextualFragment创建可注入到文档中的文档碎片。在向selectNode方式传送DOCUMENT_TYPE_NODE (<!DOCTYPE...)元素时Firefox没有正确的处理,导致在调用createContextualFragment方式时会触发空指针引用。
Firefox是一款开放源码的WEB浏览器。 Firefox的Range对象中存在空指针引用问题,成功利用这个漏洞的攻击者可以导致浏览器崩溃。 可以使用selectNode方式初始化Range对象选择将要注入Range中的节点,也可以使用createContextualFragment方式创建文档碎片,如下所示: var tagString = \"<div>I am a div node</div>\"; var range = document.createRange(); range.selectNode(document.getElementsByTagName(\"div\").item(0)); var documentFragment = range.createContextualFragment(tagString); document.body.appendChild(documentFragment); 可见使用createRange文档方式创建了一个范围,然后对当前文档中的一些元素使用了selectNode方式初始化范围。这时就可以使用createContextualFragment创建可注入到文档中的文档碎片。在向selectNode方式传送DOCUMENT_TYPE_NODE (<!DOCTYPE...)元素时Firefox没有正确的处理,导致在调用createContextualFragment方式时会触发空指针引用。