所以,我注意到在Magento WYSIWYG编辑器(包括所有内容)中弄乱了<!>
在结果HTML中呈现为<!---->
。似乎将<! >
中的任何字符串括起来都会产生正常的<!-- [string] -->
评论。我只在Chrome中对此进行了测试,但这种行为对我来说似乎有些奇怪。我查看了MDN上的 W3C spec on comments以及this小文档。然而,两个人都没有给我一个答案,我可以真正地把头包裹起来; 评论开放分隔符(“ - ”)的重要性是什么,如果遗漏了,<!>
似乎总是会产生正确的评论?也许,我的浏览器只是摆脱了无效的标记?为什么<!>
只是作为文本呈现?我知道这不重要,甚至与任何事情无关,但我只是好奇!
答案 0 :(得分:1)
正式地,HTML到HTML 4.01的注释语法很复杂,遵循SGML标准,但实际上HTML从未实现为SGML应用程序。 WDG的旧页面HTML comments简要介绍了HTML注释语法,并对其进行了一些实用的说明。实际上,评论应以<!--
开头,并以-->
结尾。这在XHTML和HTML5中是正式的。
但是浏览器更自由地实现了注释语法,因此您可以使用<!
启动它们并以>
结束(即使这不是官方的并且会导致来自HTML5验证器的错误消息)。这已经在HTML5解析规则中被描述和规定为必需的浏览器行为,请参阅8.2.4.45 Markup declaration open state部分,该部分定义了如何输入“虚假评论状态”。
因此,<! foo >
实际上有效(并在DOM中创建了一个注释节点),但它在XHTML和HTML5中被禁止。
答案 1 :(得分:0)
OWASP YoutubeVideo在18分钟左右的XSS演示中对此进行了讨论。但基本上它是浏览器处理评论的方式,因为它包含你放置的任何东西 - 所以如果你把<!->
放到五个<!----->
。