JQuery追加没有HTML?

时间:2010-09-14 10:03:04

标签: jquery append xss

您好我正在使用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 个答案:

答案 0 :(得分:7)

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

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

这是在msg下调用.text(),编码可能在{{1}}中的任何内容。

答案 1 :(得分:3)

您可以使用以下功能:

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);