Как использовать AntiXSS, но сохранить читабельность вывода? - PullRequest
0 голосов
/ 16 октября 2011

Я использую библиотеку Microsoft AntiXSS для отображения содержимого HtmlEncode на веб-странице.

Проблема в том, что он кодирует больше, чем я хочу.Например, он кодирует двоеточие ":".

Есть ли способ использовать HtmlEncode, но не определенные символы?

Например, если у меня есть строка типа "RE: тема письма"Можно ли использовать библиотеку AntiXSS для кодирования этой строки, но она не должна отображаться как «RE: тема письма».Я хочу, чтобы ":" отображался, но все же хочу кодировать вывод.

Обновление: проблема заключалась в том, что я использовал Razor, а "@" уже кодирует вывод.Таким образом, используя вызов «@» и вызов AntiXSS Html.Encode, я получил двойное кодирование.

1 Ответ

1 голос
/ 16 октября 2011

Если вы видите результаты кодирования на экране, как, кажется, указывают ваши комментарии, значит, вы используете двойную кодировку.: это двоеточие, и это будет вывод AntiXSS, но что-то после этого кодирует & to &

Что это делает, зависит от того, что вы используете.Если вы используете WebForms, то группа элементов управления по умолчанию закодирует Text и другие свойства, и остановка зависит от элемента управления.Если вы используете MVC, <%: выполняет кодирование того, что вы передаете, перед добавлением его в выходной поток.Вы можете либо, если вы используете MVC3, заменить кодировщики по умолчанию (<a href="http://idunno.org/archive/2011/04/23/antixss-4-1-beta-1.aspx" rel="nofollow"> AntiXSS beta 4.1 , либо свернуть свой , если вы не хотите использовать бета-версию), либо указать MVCвы выводите уже кодирующую строку, выводя HtmlString .

In .NET 4.5 , основные части AntiXSS будут встроены и конфигурироваться через переключатель конфигурации.

...