У меня есть редактор, который позволяет пользователям добавить HTML, который хранится в базе данных и представляется на веб-странице. Так как это - недоверяемый вход, я планирую использовать Microsoft.Security.Application.AntiXsSS.GetSafeHtmlFragment
санировать HTML.
Я не согласен с выбранным ответом по двум причинам
Обычно вы кодируете в точке вывода и обрабатываете любые данные, поступающие из хранилища данных, как ненадежные по умолчанию - в конце концов, что, если кому-то удастся отредактировать вашу базу данных напрямую или с помощью SQL-инъекции?
AntiXss.GetSafeHtmlFragment()
)Вы можете использовать в директиве страниц параметр ValidateRequest = «TRUE» . Таким образом, все данные запроса подтверждены, и если есть проблема проверки, вы всегда можете поймать ошибку. Это также предотвращает инъекционные потоки SQL и другие не только возможные XSS.
С числовыми данными вы можете проверить целочисленное переполнение или неправильное использование типов данных с Int32.triparse () или любым другим из семейства TryParse (Byte.triparse int16.triparse ...)
Нет необходимости использовать любой другой Класс или дополнительный метод Sanitizer.
Послушайте подкаст 67 OWASP 67 с Джеффом Уильямсом по XSS . Он говорит о запрете дезинфекции или кодирования перед хранением. Основная причина в том, что если (когда) библиотеки будут развиваться в ответ на новые уязвимости, ваши данные снова застрянут в старой версии. Конечно, это не мешает вам запускать какие-либо данные в белом списке в точке входа и отклонять все, что выходит за пределы допустимого диапазона.