在
XML文档中使用CDATA元素是否易受攻击?如果是这样,如果我们在XML文档中使用CDATA元素会发生什么?
我不知道你的’漏洞’是什么意思,但很多人用CDATA部分做错了.当懒惰的程序员不能真正理解文本转义时,会发生这种情况,并试图避免在XML中正常编写特殊字符的过程.他们认为他们可以逃脱:
print "<element><![CDATA["+textstring+"]]></element>";
虽然这确实会阻止<或者& texttring中的字符被视为标记,它不是防水的,因为textstring可能包含一个]]>序列,导致:
<element><![CDATA[ Foo ]]> <bar>I'm an unexpected element!</bar> ]]></element>
这是一个XML注入,像HTML注入一样可能会产生类似XSS的安全性影响.
所以你仍然需要逃避CDATA中的一些序列(通常,你会在两个CDATA部分之间拆分]]>序列.在实践中,使用CDATA不仅仅是以正常的方式对文本内容进行编码.所以真的没有理由使用CDATA部分.