Microsoft AntiXSS - нужно ли декодировать? - PullRequest
3 голосов
/ 23 сентября 2010

Класс HttpUtility обеспечивает как кодирование, так и декодирование.Но когда я использую библиотеку MS AntiXSS 3.1, у меня есть набор методов только для кодирования, можно ли этого избежать декодирования?

Например

Перед применением AntiXSS:

lblName.Text = "ABC" + "<script> alert('Inject'); </script";

После применения AntiXSS:

lblName.Text = AntiXSS.HTMLEncode("ABC" + "<script> alert('Inject'); </script");

Итак, после применения кодировки теги HTML отображаются в моем элементе управления Label.

Это желаемый результат?

Ответы [ 3 ]

3 голосов
/ 23 сентября 2010

Да, я думаю, что это желаемый результат.Это потому, что скрипт не выполняется.Если бы скрипт был выполнен, вместо тегов скрипта было бы показано предупреждение.Так что это безопасный код.

3 голосов
/ 22 января 2015

Вы можете использовать метод HttpUtility.HtmlDecode для декодирования закодированного текста AntiXss (или любого закодированного текста). Никакого явного декодирования AntiXss не требуется.

3 голосов
/ 23 сентября 2010

Это зависит от того, откуда поступает ваш вклад и что вы хотите с ним делать. Большую часть времени фреймворк декодирует для вас, прежде чем вы видите вещи - Request.Form, Request.QueryString и т. Д.

Если вы читаете закодированную строку откуда-то еще, например, из базы данных, вы можете захотеть ее декодировать, в противном случае вы увидите, например, двойное кодирование;

I 3> AntiXSS encoded once becomes

I 3&gt; AntiXSS which then becomes after double encoding

I 3&amp;gt; AntiXSS

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

...