Как HTML.Encode в веб-формах - PullRequest
       24

Как HTML.Encode в веб-формах

18 голосов
/ 26 октября 2010

У меня есть приложение ASP.NET Web Forms.Есть страница с текстовыми полями, и пользователи вводят в них поисковые термины, которые используются для запроса к базе данных.

Я знаю, что мне нужно предотвратить атаки с использованием JavaScript-инъекций.Как мне это сделать?

В MVC я бы использовал Html.Encode.Кажется, он не распознается в веб-формах.

Спасибо!

Ответы [ 5 ]

19 голосов
/ 26 октября 2010

Вы можете использовать HttpUtility.HtmlEncode

8 голосов
/ 07 марта 2017

Если вы используете ASP.NET 4 или новее, вы можете использовать этот синтаксис:

<%: Model.Username %>

Который будет HTML-кодировать выражение. Скотт Гу объясняет преимущества этого синтаксиса:

Мы выбрали синтаксис <%:%>, чтобы было легко быстро заменить существующие экземпляры <% =%> блоков кода. Это также позволяет вам легко выполнять поиск в вашей кодовой базе элементов <% =%>, чтобы найти и проверить любые случаи, когда вы не используете кодировку HTML в своем приложении, чтобы убедиться, что у вас правильное поведение.

5 голосов
/ 26 октября 2010

На веб-формах вы можете позвонить

HttpUtility.HtmlEncode(foo);

Будьте осторожны, чтобы не дважды кодировать.

3 голосов
/ 26 октября 2010

Вы можете использовать Server.HtmlEncode (что переводится как HttpServerUtility.HtmlEncode), но у Microsoft есть лучшая библиотека веб-защиты под названием AntiXSS , которую можно загрузить с CodePlex . Он включает в себя утилиту, которая использует подход «белого списка» к HtmlEncoding (намного безопаснее и лучше, и рекомендуется OWASP , хотя они указывают на более старую версию ). Он также имеет инструменты, которые позволяют вам получить безопасные фрагменты HTML и т. Д.

Однако, если вы посмотрите не на что иное, посмотрите на OWASP top 10 . Похоже, вы просто царапаете поверхность безопасности веб-приложения, и это лучший ресурс из всех. Атаки с использованием межсайтового скриптинга - это лишь одна из множества вещей, от которых нужно защищаться.

Это также тот, который вам необходимо соблюдать, если вам приходится иметь дело с любым видом соответствия (PCI, Red flag и т. Д.)

0 голосов
/ 15 мая 2019

На веб-сайтах .Net v4.0 и выше вы можете использовать, как показано ниже:

<%
   string notificationIcon = "<i class='fa fa-plus fa-icon fa-stack-right-top'></i>";
%>
<%: new HtmlString(notificationIcon) %>

Microsoft Doc Link

...