Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript使用CDATA部分解析xml-防止执行脚本 http://www.somepage.com/page1.html 警报(“你好”);]]> 日常意大利语 吉娅达·德·劳伦蒂斯 2005 30_Javascript_Xml_Xml Parsing_Xss - Fatal编程技术网

使用javascript使用CDATA部分解析xml-防止执行脚本 http://www.somepage.com/page1.html 警报(“你好”);]]> 日常意大利语 吉娅达·德·劳伦蒂斯 2005 30

使用javascript使用CDATA部分解析xml-防止执行脚本 http://www.somepage.com/page1.html 警报(“你好”);]]> 日常意大利语 吉娅达·德·劳伦蒂斯 2005 30,javascript,xml,xml-parsing,xss,Javascript,Xml,Xml Parsing,Xss,假设我想使用javascript解析xml <?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book category="cooking"> <page> <uri>http://www.somepage.com/page1.html</uri> <content><![CDATA[<script>alert("Hello");&

假设我想使用javascript解析xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="cooking">
<page>
<uri>http://www.somepage.com/page1.html</uri>
<content><![CDATA[<script>alert("Hello");</script>]]></content>
</page>
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
</bookstore>

if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
open(“GET”,“books.xml”,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
txt=xmlDoc.getElementsByTagName(“内容”)[0]。子节点[0]。节点值;
document.write(txt);
输出是一个警报框,消息为Hello。我不希望执行脚本

而不是xmlDoc.getElementsByTagName(“内容”)[0].childNodes[0].nodeValue; 我可以做些什么来获得以下输出:

<!DOCTYPE html>
<html>
<body>
<script>
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","books.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

txt=xmlDoc.getElementsByTagName("content")[0].childNodes[0].nodeValue;
document.write(txt);
</script>
</body>
</html>
警报(“你好”);

不要
文档。编写
文档-将其视为HTML,而不是文本


使用
createTextNode
,然后使用
appendChild
在DOM中的某处生成结果。

我想您可能使用了以下方法:

var config=newActiveXObject(“Microsoft.XMLDOM”);
config.async=false;
config.loadXML(xmlhttp.responseText);
var read=config.selectNodes(“//bookstore/book/page/content”)[0];
警报(读取);

xmlDoc.getElementsByTagName(“内容”)[0]。childNodes[0]。nodeValue
非常完美。向上投票!:)
<script>alert("Hello");</script>