Потеря разрыва строки AntiXSS HtmlEncode Textarea

Я разрабатываю веб-приложение на ASP.NET, и я получаю ввод текста от пользователей, а затем отображаю этот ввод на веб-сайте. При сохранении ввода в базу данных я не кодирую ввод и напрямую записываю их в БД.

Если ввод содержит «ввод», я не хочу терять разрывы строк. Поэтому я заменяю данные следующим образом: Replace("\r\n", "<br />")

И чтобы предотвратить XSS-атаку перед отображением, я кодирую данные, используя функцию Microsoft.Security.Application.Encoder.HtmlEncode библиотеки Microsoft AntiXSS.

Эта функция также кодирует «<br/>», и на экране у меня нет разрыва строки.

Если я сначала закодирую с помощью AntiXSS, а затем заменю «\r\n» на «<br/>», я также не получу разрыва строки, поскольку AntiXSS, я думаю, удаляет «\r\n».

Если я использую Server.HtmlEncode, а затем заменяю "\r\n" на "<br/>", тогда все в порядке. Но я хочу использовать библиотеку AntiXSS и не знаю, как этого добиться.

Есть ли способ распечатать разрывы строк с помощью функции AntiXSS HtmlEncode?

Спасибо


person Mehmet    schedule 19.05.2012    source источник
comment
После того, как <br/> закодирован, не можете ли вы просто заменить закодированный <br/> декодированной версией? например Replace("&lt;br/&gt;","<br/>")?   -  person Caleb Brinkman    schedule 02.10.2015