代码之家  ›  专栏  ›  技术社区  ›  SSpoke

没有HTML的jquery append?

  •  3
  • SSpoke  · 技术社区  · 14 年前

    您好,我使用jquery的.append()函数存在XSS漏洞

    我要做的是附加来自用户的原始聊天信息,我不想去掉服务器端或客户端的HTML标签,我只想显示它们。然而jquery的.append()方法呈现HTML标记。

    是否仍要执行AppendText()?我尝试了.text(),但它不能正确生成正确的HTML。

    我现在用。

      var li = $('<div></div>').addClass('chatmsg');
      var al = $('<span></span>').addClass(chatClass).text("You");
      li.append(al);
      li.append(" " + msg);
      $('.chat').append(li);
    

    如何修复li.append(“”+msg);

    行忽略呈现HTML谢谢,没有任何高级的像正则表达式之类的。

    谢谢

    2 回复  |  直到 14 年前
        1
  •  7
  •   Nick Craver    14 年前

    您可以稍微更改一下,如下所示:

    var li = $('<div />', { text: ' ' + msg, 'class': 'chatmsg' });
    var al = $('<span />', { text: 'You', 'class': chatClass });
    li.prepend(al);
    $('.chat').append(li);
    

    这是电话 .text() 在封面下,对可能在 msg .

        2
  •  3
  •   Fabian    14 年前

    您可以使用以下功能:

    function htmlEncode(value){ 
      return $('<div/>').text(value).html(); 
    }
    

    所以你的代码变成:

      var li = $('<div></div>').addClass('chatmsg');
      var al = $('<span></span>').addClass(chatClass).text("You");
      li.append(al);
      li.append(" " + htmlEncode(msg));
      $('.chat').append(li);