HTML属性中的引用会破坏布局

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实体,看起来很丑陋.

jwu*_*ler 5

您需要转义用户指定的所有输出(使用实体).DOM方法自动完成.

  • @Robert Harvey:[escape](http://en.wikipedia.org/wiki/Escape_sequence)和[entity](http://en.wikipedia.org/wiki/Character_entity_reference).您需要转义HTML中具有特殊含义的所有字符.是的,使用DOM方法可以解决问题. (2认同)