JQuery добавить без HTML? - PullRequest
       10

JQuery добавить без HTML?

3 голосов
/ 14 сентября 2010

Здравствуйте, у меня есть уязвимость XSS, использующая функцию japu.append ().

Я добавляю необработанные сообщения чата, приходящие от пользователей, и я не хочу удалять теги html на сервере или на стороне клиента. Iпросто хочу их отобразить.И все же метод 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 ]

7 голосов
/ 14 сентября 2010

Вы можете немного его изменить, например так:

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

Это вызов .text() под обложками, кодирующий все, что может быть в msg.

3 голосов
/ 14 сентября 2010

Вы можете использовать следующую функцию:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...