Я ищу Java-кодировщик Java

Я ищу Java-кодировщик Java с функцией белого списка для кодирования < до &lt; и нескольких других вещей. По свойству "белый список" я имею в виду способность сохранять теги, такие как <b> и <i>, при кодировании всего остального. Сортировка того, что SO делает.

Я посмотрел на ESAPI, но документации по использованию полностью не хватает. Я не смог найти ничего о том, как вызвать API (я не разработчик Java).

Другое имя, которое появилось, было HTMLTidy, но я прочитал, что он кодирует, используя unicode, вместо стандартного &lt; или &gt;, который нарушит одно из моих требований.

Любые идеи?

PS: Мое намерение состоит в том, чтобы позволить моим пользователям вводить все, что они хотят, и защищать их, кодируя что-либо вне моего белого списка/потенциально опасное.

Ответ 1

Я понимаю, что вы хотите использовать тот же подход, что и SO. Для ввода данных необходимо иметь столбцы БД 2: один для необработанных данных (чтобы его можно было повторно отобразить в редакторе) и один с белыми/удержанными данными (чтобы он мог отображаться на выходе). Я предполагаю, что у них есть еще один столбец, указывающий версию данных с белыми/уцененными данными. Версия хранится в настраиваемой переменной приложения. Всякий раз, когда запрашиваются данные с белыми или уцененными значениями, в то время как версия была изменена, она будет переименована/потеряна на основе исходных данных.

Отметить часть в сторону, вы просто хотите, чтобы белый список данных, в Java вы можете использовать Jsoup для этого. Обратите внимание, что он не кодирует нежелательные HTML-теги, он просто удаляет их. Jsoup Whitelist API предлагает несколько предопределенных белых списков, а также позволяет настраивать их. Вот пример того, как вы можете использовать его с Whitelist#basic():

String whitelistedHtml = Jsoup.clean(rawHtml, Whitelist.basic());
// ...

Этот белый список позволяет в соответствии с javadoc следующие HTML-теги:

a, b, blockquote, br, cite, code, dd, dl, dt, em, i, li, ol, p, pre, q, small, strike, strong, sub, sup, u, ul

См. также:

Ответ 2

<plug shameless="true">

Из http://code.google.com/p/owasp-java-html-sanitizer

Быстрая и простая настройка HTML Sanitizer, написанная на Java, которая позволяет включать HTML, созданный третьими лицами в вашем веб-приложении, при этом защищая от XSS.

http://code.google.com/p/owasp-java-html-sanitizer/source/browse/trunk/src/main/org/owasp/html/examples/EbayPolicyExample.java#127 показывает, как элементы и атрибуты белого списка.