Как избежать приложений из атак XSS?
Как безопасно защищать наши веб-приложения от атак XSS? Одно приложение является неприступным для атаки, если оно не делает никакого преобразования специальных charecters.
Ответы
Ответ 1
Вы должны вывести HTML-код из любого ввода, прежде чем вывести его обратно пользователю. Некоторые ссылки:
Ответ 2
Входы HTML-экранирования работают очень хорошо.
Но в некоторых случаях бизнес-правила могут потребовать, чтобы вы НЕ избежали HTML.
Использование REGEX не подходит для задачи, и слишком сложно найти подходящее решение, используя его.
Лучшее решение, которое я нашел, это использовать:
http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer
Он создает дерево DOM с предоставленным вводом и фильтрует любой элемент, который ранее не разрешен белым списком. API также имеет другие функции для очистки html.
Ответ 3
Просто добавьте в список WhiteFang34:
У него есть несколько встроенных белых списков, таких как разрешение HTML, HTML и т.д.
Я выбрал это для Apache Commons StringEscapeUtils.escapeHtml()
из-за того, как он обрабатывает апострофы. То есть если наши пользователи вводят:
У мамы Алана был хороший рецепт домового.
JSoup оставит только апостроф, тогда как Apache Commons избежит этой строки, как:
Алан\у мамы был хороший рецепт домового.
Что бы я не хотел беспокоиться о unescaping перед отображением пользователю.