Ответ 1
Вы можете использовать HttpUtility.HtmlEncode
У меня есть приложение ASP.NET Web Forms. Существует страница с TextBoxes, и пользователи вводят термины поиска в те, которые используются для запроса базы данных.
Я знаю, что мне нужно предотвращать атаки JavaScript-инъекций. Как это сделать?
В MVC я бы использовал Html.Encode
. В Web-формах он не распознается.
Спасибо!
Вы можете использовать HttpUtility.HtmlEncode
Если вы используете ASP.NET 4 или новее, вы можете использовать этот синтаксис:
<%: Model.Username %>
Который будет HTML-кодировать выражение. Скотт Гу объясняет преимущества этого синтаксиса:
Мы выбрали синтаксис <%:%>, чтобы было легко быстро заменить существующие экземпляры <% =%> блоков кода. Это также позволяет вам легко выполнять поиск в вашей кодовой базе элементов <% =%>, чтобы найти и проверить любые случаи, когда вы не используете кодировку HTML в своем приложении, чтобы убедиться, что у вас правильное поведение.
На веб-форматах вы можете позвонить
HttpUtility.HtmlEncode(foo);
Будьте осторожны, чтобы не закодировать дважды.
Вы можете использовать Server.HtmlEncode (что соответствует HttpServerUtility.HtmlEncode
), но у Microsoft есть лучшая библиотека защиты веб-сайтов, называемая AntiXSS, который вы можете скачать из CodePlex. Он включает в себя утилиту, которая использует белый список для HtmlEncoding
(гораздо безопаснее и лучше, и рекомендуется OWASP, хотя они указывают на более старая версия). Он также имеет инструменты, которые позволяют вам получать безопасные фрагменты HTML и т.д.
Если вы не посмотрите ни на что другое, посмотрите OWASP top 10. Похоже, вы просто царапаете поверхность безопасности веб-приложений, и это лучший ресурс. Атаки на межсайтовых сценариях - это всего лишь одна из целых вещей, которые вам нужно защищать.
Это также тот, который вам нужно будет соответствовать, если вам нужно иметь дело с любым видом соответствия (PCI, красный флаг и т.д.)
В Web Froms.Net v4.0 и выше вы можете использовать, как показано ниже:
<%
string notificationIcon = "<i class='fa fa-plus fa-icon fa-stack-right-top'></i>";
%>
<%: new HtmlString(notificationIcon) %>