您好我正在使用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的行谢谢你,没有像正则表达式那样先进的东西。
由于
答案 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);