Ответ 1
Вы должны использовать AntiSamy. (То, что я сделал)
Я пишу приложение на основе сервлета, в котором мне нужно предоставить систему обмена сообщениями. Я спешу, поэтому я выбираю CKEditor, чтобы предоставить возможности редактирования, и в настоящее время вставляю сгенерированный html непосредственно на веб-страницу отображение всех сообщений (сообщения хранятся в базе данных MySQL, fyi). CKEditor уже фильтрует HTML на основе белого списка, но пользователь все равно может вводить вредоносный код с запросом POST, поэтому этого недостаточно.
Хорошая библиотека уже существует для предотвращения атак XSS путем фильтрации тэгов HTML, но она написана на PHP: HTML очиститель
Итак, существует аналогичная зрелая библиотека, которая может использоваться в Java? Простая замена строки, основанная на белом списке, кажется недостаточной, поскольку я хотел бы также фильтровать неверные теги (что могло бы изменить дизайн страницы, на которой отображается сообщение).
Если этого не происходит, тогда как мне следует продолжить? Парсер XML выглядит излишним.
Примечание. В SO есть много вопросов об этом, но все ответы относятся к фильтру ВСЕ HTML-теги: я хочу сохранять допустимые теги форматирования.
Вы должны использовать AntiSamy. (То, что я сделал)
Я бы рекомендовал использовать Jsoup. Здесь выдержка из своего сайта.
Санизировать ненадежный HTML
Проблема
Вы хотите разрешить ненадежным пользователям предоставлять HTML для вывода на ваш сайт (например, в качестве представления комментариев). Вам нужно очистить этот HTML-код, чтобы избежать межсайтовых скриптов (XSS).
Решение
Используйте jsoup HTML
Cleaner
с конфигурацией, указаннойWhitelist
.String unsafe = "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>"; String safe = Jsoup.clean(unsafe, Whitelist.basic()); // now: <p><a href="http://example.com/" rel="nofollow">Link</a></p>
Jsoup предлагает больше преимуществ, чем это. См. Также Плюсы и минусы парсеров HTML в Java.
Если ни один из готовых вариантов не кажется достаточным, есть прекрасная серия статей о XSS и предотвращении атак в Код Google, Он должен предоставить много информации для работы, если вы закончите спуск по этому пути.