JoJ*_*oJo 1 html javascript dom html-entities
我的网站有用户生成的内容.我注意到,如果用户在某些文本中有引号,之后我在HTML属性中显示该文本,则布局会在IE中搞砸.
<a href="link.html" title="user "description" of link">Hello</a>
Run Code Online (Sandbox Code Playgroud)
但是,如果我用Javascript(Prototype库)生成了相同的锚点,那么IE中的布局就不会搞砸了:
$$('body').first().appendChild(
new Element(
'a', {
title: 'user "description" of link',
href: 'link.html'
}
).update('Hello')
);
Run Code Online (Sandbox Code Playgroud)
为什么会这样?JS和纯HTML版本都有相同的预期结果,但只有JS不会搞砸IE.幕后发生了什么?
顺便说一句,我从所有用户输入中执行strip_tags()和清除XSS攻击,但我没有删除所有HTML实体,因为我使用了大量的表单文本输入框来显示用户生成的文本.表单元素字面上显示HTML实体,看起来很丑陋.
您需要转义用户指定的所有输出(使用实体).DOM方法自动完成.