Apache Commons StringEscapeUtils против JSoup для предотвращения XSS? - PullRequest
0 голосов
/ 08 февраля 2012

Я хочу очистить пользовательский ввод для предотвращения атак XSS, и нам не обязательно иметь белый список HTML, так как нашим пользователям не нужно публиковать HTML / CSS.

Присматриваясь к альтернативамтам, что было бы лучше? Apache Commons 'StringEscapeUtils или JSoup Cleaner ?

Спасибо!

Обновление:

Я пошелс JSoup после написания некоторых модульных тестов для него и Apache Commons.

Мне нравится, что JSoup не будет связываться с одинарными кавычками (то есть "мама Алана" не остается неизменной, тогда как Apache Commons превращает его в "маму Алана").

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

Ответы [ 2 ]

0 голосов
/ 30 сентября 2015

Мне бы очень хотелось увидеть тестовые примеры Cuga, потому что если вы используете Apache Commons escapeHtml в 2.6 или escapeHtml4 в 3+, он не добавляет косую черту.Он просто преобразует символы в HTML-объекты, что четко указано в документации.

У меня даже есть публичный пример, чтобы проверить это:

https://gist.github.com/croucha/2e2925264890886cbf4d

Так что, пожалуйста, докажите, что я не прав, в противном случае ваша часть об избежании добавления слешей неверна.Если вы хотите по-прежнему отображать эти небезопасные символы, но избегаете выполнения внутри браузера, тогда лучшим вариантом будет Apache commons.Насколько я могу судить, Jsoup полностью опускает символы, включая содержимое, даже если это безопасно.

0 голосов
/ 08 февраля 2012

"лучше"?Я не думаю, что это имеет значение.У Cleaner есть Whitelist.none (), escape-утилиты будут избегать всего.

Это зависит от того, как вы хотите, чтобы «очищенный» ввод отображался: вам нужны только текстовые узлы или вы хотите экранированный HTMLпоявиться?

...