2010-10-11 6 views
4

Проблема заключается в следующем:Есть ли javascript-эквивалент htmlencode/htmldecode от asp.net?

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

Очень важно, чтобы остановить сценариев атак, и asp.net не позволит вам представить небезопасный код, так что на вас подать Javascript заменить < с &lt; и то же самое для>

Когда значения извлекаются из сервера , они будут возвращаться с &lt; и &gt;, который прекрасно подходит для отображения на этикетке, но если положить в текстовое поле, они должны быть заменены обратно < и>

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

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

+1

Я бы не очищал входные данные на стороне клиента. Как это остановить скриптовые атаки? Убедитесь, что вы очистили отправленную строку на стороне * сервера *. –

ответ

4

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

myElement.appendChild(
    document.createTextNode(myString) 
);