Использование библиотеки MS Anti XSS для очистки HTML - PullRequest
6 голосов
/ 09 января 2010

В целях предотвращения атак XSS я обновляю страницу, на которой у нас есть текстовое поле, которое принимает HTML, сохраняет его в базе данных, а затем извлекает и отображает его.

Насколько я понимаю, я могу дезинфицировать HTML, используя метод AntiXSS.GetSafeHtmlFragment(). До тех пор, пока я делаю это перед сохранением HTML в базе данных, мне предоставляется покрытие? Нужно ли что-то делать, когда HTML выводится на веб-странице?

Кроме того, похоже, что белый список является своего рода черным ящиком. Есть ли способ обновить это на основе наших требований?

Ответы [ 4 ]

4 голосов
/ 09 января 2010

Вы должны быть установлены. Хотя, очевидно, это не защитит вас от того, что уже есть в базе данных.

Вы можете использовать AntiXSS.GetSafeHtmlFragment() при выводе страницы вместо сохранения. Но делать при сохранении, вероятно, безопаснее. Вы не хотели бы делать это как при рендеринге, так и при сохранении.

Белый список недоступен для редактирования.

3 голосов
/ 23 июня 2012

В последних 4.x библиотеках Anti-XSS GetSafeHtml () и SetSafeHtmlFragment () находятся в классе Sanitizer в Microsoft.Security.Application, который был перемещен в сборку HtmlSanitizationLibrary.

[Устаревшая ссылка: http://www.microsoft.com/en-us/download/details.aspx?id=28589] Обновление: похоже, что оно было перемещено в пакет NuGet: https://www.nuget.org/packages/HtmlSanitizationLibrary/

3 голосов
/ 12 июня 2010

Что касается вашего вопроса о «черном ящике»: да, это черный ящик, и я понимаю, что вы не можете его редактировать. Если вам нужна дополнительная детализация, ознакомьтесь с проектом AntiSamy.NET .

1 голос
/ 09 января 2010

Ты почти у цели. Вы должны убедиться, что вы выбрали правильную кодировку . Например, если пользовательский ввод был введен в URL, вам нужно будет использовать AntiXSS.UrlEncode (), а если он войдет в JavaScript, вы захотите использовать AntiXSS.JavaScriptEncode (). Если при сохранении входных данных вы не можете гарантировать, какой будет выходной формат, лучше выполнить очистку во время вывода.

...