Есть ли javascript-эквивалент htmlencode / htmldecode от asp.net?

Проблема вот в чем:

У вас есть текстовое поле, вы вводите какой-то текст, отправляете его на сервер. На другой странице это значение извлекается и отображается на экране в текстовом поле и метке.

Важно остановить атаки сценариев, и asp.net не позволит вам отправить небезопасный код, поэтому при отправке вам javascript замените ‹на < и то же самое для>

Когда значения извлекаются с сервера, они возвращаются с < и >, что хорошо для отображения в метке, но при вводе в текстовое поле они должны быть заменены обратно на ‹и>

Данные должны надежно храниться в базе данных, так как другие люди могут использовать этот контент. С точки зрения безопасности я хотел бы вызвать на нем htmlencode, а затем сохранить его. Именно этот закодированный HTML-код я хотел бы отобразить в метке на клиенте, но декодированную версию я бы хотел отобразить в текстовом поле.

Так что мне нужно решение htmldecode в javascript. htmlencode / decode заменяет не только ‹>, и без окончательного списка я не могу создать свой собственный метод. Есть ли решение?


person NibblyPig    schedule 11.10.2010    source источник
comment
Я бы не стал заниматься очисткой ввода на стороне клиента. Как это остановить атаки сценариев? Убедитесь, что вы очистили отправленную строку на стороне сервера.   -  person ingredient_15939    schedule 31.10.2012


Ответы (1)


Вместо того, чтобы пытаться преобразовать строку текста в HTML и затем добавить ее в документ с помощью innerHTML; используйте стандартные методы DOM.

myElement.appendChild(
    document.createTextNode(myString)
);
person Quentin    schedule 11.10.2010