Как правильно обрабатывать html-теги в текстовой области

У меня есть форма asp.net с элементом textarea (часть профиля участника — поле «Цели»). Я не возражаю против того, чтобы пользователи вводили туда html-теги, но asp.net не позволяет отправлять html-теги внутри текстовых полей по соображениям безопасности (), что хорошо. Итак, я вижу два варианта: полностью удалить html-теги из значения textarea перед отправкой формы или избежать значения textarea, заменив < и > на &lt; и &gt; перед отправкой на сервер.

Другими словами, если кто-то напечатал в текстовом поле следующее:

введите здесь описание изображения

Я хочу каким-то образом сохранить его на сервере и показать пользователю точно так, как он набрал его в следующий раз, когда он будет на этой странице.

Как обычно решают такую ​​проблему?

ОБНОВЛЕНИЕ: Asp.net по умолчанию не позволяет отправлять теги в элементы input/textarea. И если я отключу эту проверку, я открою потенциал для эксплойтов XSS. Все, что я хочу, это найти правильный способ избежать ввода (и назначить обратно элементу), а затем иметь возможность отменить его после загрузки формы.


person Andrey    schedule 20.04.2011    source источник
comment
Это веб-формы или MVC?   -  person Oded    schedule 20.04.2011
comment
Это зависит от того, хотите ли вы использовать HTML в своем контенте. Если это так, избегайте их входа и выхода. Если вам не нужен HTML, просто удалите их перед отправкой в ​​БД.   -  person DA.    schedule 21.04.2011
comment
Не экранировать на входе, а на выходе. Вы можете безопасно отправить свой текст на сервер (правильно закодированный, но это должно быть сделано автоматически при использовании «стандартных» форм POST) и сохранить ввод пользователя в базу данных (конечно, остерегайтесь SQL-инъекций). Правильно преобразовывайте проблемные символы в объекты HTML при выводе текста, по крайней мере, <, > и & (и, возможно, другие). Я не могу дать вам ответ, так как я совсем не привык к ASP.net. Кстати, никогда не удаляйте теги, потому что вы можете испортить что-то вроде a<c^2&b>3.   -  person Marcel Korpel    schedule 21.04.2011
comment
@Marcel: В чем опасность a<c^2&b>3?   -  person Andrey    schedule 21.04.2011
comment
Если вы прямо уберете все между <…>, вы измените эту строку на a3.   -  person Marcel Korpel    schedule 21.04.2011
comment
@ Марсель: и? в чем опасность а3? Я что-то упускаю?   -  person Andrey    schedule 21.04.2011
comment
Давайте приведем лучший пример: если кто-то хочет поговорить о <script> элементах, как я только что сделал, я не хочу, чтобы программа удаляла это слово, она должна просто правильно кодировать/переводить угловые скобки.   -  person Marcel Korpel    schedule 21.04.2011
comment
Мне интересно, почему мой вопрос был отклонен...   -  person Andrey    schedule 21.04.2011
comment
@Marcel: Хорошо, понял! Я думал, вы хотели сказать, что удаление тегов может быть проблемой безопасности, поэтому мне было любопытно   -  person Andrey    schedule 21.04.2011


Ответы (1)