Могу ли я избежать специальных символов html в javascript? - PullRequest
149 голосов
/ 04 июня 2011

Я хочу отобразить текст в HTML с помощью функции JavaScript. Как я могу избежать специальных символов html в JS? Есть ли API?

Ответы [ 12 ]

0 голосов
/ 30 марта 2016

Я придумал это решение.

Давайте предположим, что мы хотим добавить html к элементу с небезопасными данными от пользователя или базы данных.

var unsafe = 'some unsafe data like <script>alert("oops");</script> here';

var html = '';
html += '<div>';
html += '<p>' + unsafe + '</p>';
html += '</div>';

element.html(html);

Это небезопасно против атак XSS. Теперь добавьте это.

$(document.createElement('div')).html(unsafe).text();

Так оно и есть

var unsafe = 'some unsafe data like <script>alert("oops");</script> here';

var html = '';
html += '<div>';
html += '<p>' + $(document.createElement('div')).html(unsafe).text(); + '</p>';
html += '</div>';

element.html(html);

Для меня это намного проще, чем использовать .replace(), и это удалится !!! все возможные теги HTML (я надеюсь).

0 голосов
/ 17 апреля 2014

Попробуйте, используя библиотеку prototype.js:

string.escapeHTML();

Попробуйте демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...