在XML中使用CDATA元素是否容易受到攻击?

Mad*_*han 7 xml cdata

在XML文档中使用CDATA元素是否易受攻击?如果是这样,如果我们在XML文档中使用CDATA元素会发生什么?

bob*_*nce 9

我不知道你的'漏洞'是什么意思,但很多人用CDATA部分做错了.当懒惰的程序员不真正理解文本转义时,会发生这种情况,并试图避免&在XML 中编码特殊字符的正常过程.他们认为他们可以逃脱:

print "<element><![CDATA["+textstring+"]]></element>";
Run Code Online (Sandbox Code Playgroud)

虽然这确实会阻止一个<或一个&字符textstring被视为标记,但它不是不透水的,因为textstring可能包含一个]]>序列,导致:

<element><![CDATA[ Foo ]]> <bar>I'm an unexpected element!</bar> ]]></element>
Run Code Online (Sandbox Code Playgroud)

这是一个XML注入,像HTML注入一样可能会产生类似XSS的安全性影响.

所以你仍然需要在CDATA中转义一些序列(通常,你会]]>在两个CDATA部分之间拆分序列).在实践中,使用CDATA不仅仅是&以正常方式编写文本内容.所以真的没有理由使用CDATA部分.