我正在写一份关于 HTML 中的 XML 注入攻击的报告。因此,我将拥有(损坏的)HTML 内容作为我的 HTML 的内容。因此,我试图将我的 HTML 内容包装在 CDATA 块中,但它似乎确实可以正确呈现。
我有(由 W3C 验证)文档:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>report</title>
</head>
<body>
<div><![CDATA[AuthType=<META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert('XSS')</SCRIPT>">]]></div>
</body>
</html>
根据我对维基百科文章的理解,这意味着内容应该“标记为解析器仅解释为字符数据,而不是标记”。所以输出应该是
AuthType=<META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert('XSS')</SCRIPT>">
然而,在这两个Chrome 21.0.1180.60 m
和Firefox 14.0.1
所有呈现的是
]]>
到底是怎么回事?<![CDATA[
从第一个到第一个的所有内容不应该都]]>
出现在屏幕上,就好像每个角色都被逃脱了吗?