Задать вопрос
@gromyko21

Как сделать вывод js игнорируя html теги?

Есть такой скрипт в чатах
else {

        var text = '<div class="card"><p>'+data.content+'</p></div>';

          $('#chat-log').append(text);
        }

data.content получает из json(бэкенд на django). В это место вставляется текст сообщения, но проблема заключается в том, что все это записывается в строку с тегами html то есть любой пользователь может вставлять теги(например написав<b> Жирный </b> приходит текст "Жирный" жирным шрифтом соответственно), а то и целый скрипт, который все может поломать. Нужно как-то обойти этот момент. У меня было предположение, что нужно сделать что-то подобное
$(document).ready(function(){

	let test = $('<div style="font-size:24px;"></div>');
 	let test1 = $('<div style="background: #000;"></div>');
 	let test2 = $('<div style="color: #fff;"></div>');
  test2.text('<div style="color:red">test</div>');
  test1.append(test2);
  test.append(test1);
  
	$('#test').append(test);

То есть тег вставлять в тег и так далее. Но у меня этих дивов 10 штук плюсом 3 проверки то есть добавится около 90 строк кода таким образом, что меня не устраивает. Может посоветуете более изящный способ обхода этой проблемы?
  • Вопрос задан
  • 278 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 2
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Бэк должен очищать строку от html сущностей.
Вот пример аналогичной функции из WordPress

Если очень нужно, подобное можно делать и на фронте:
https://stackoverflow.com/questions/6234773/can-i-...
Ответ написан
@cloudz
это xss

валидируйте обязательно на беке, или будет момент когда вам кто-нибудь сломает сайт
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы