Java: лучший способ удалить Javascript из HTML - PullRequest
7 голосов
/ 11 ноября 2010

Какая библиотека / подход для удаления Javascript из HTML будет отображена?

Например, возьмите:

<html><body><span onmousemove='doBadXss()'>test</span></body></html>

и оставить:

<html><body><span>test</span></body></html>

Я вижу проект DeXSS . Но разве это лучший путь?

Ответы [ 3 ]

11 голосов
/ 11 ноября 2010

В JSoup есть простой метод очистки HTML на основе белого списка.Проверка http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer

Используется белый список, который безопаснее, чем черный список, используемый DeXSS.Со страницы DeXSS:

Существует еще ряд известных XSS-атак, которые DeXSS еще не обнаруживает.

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

1 голос
/ 11 ноября 2010

Вы можете попробовать dom4j http://dom4j.sourceforge.net/dom4j-1.6.1/ Это синтаксический анализатор DOM (в отличие от SAX), который позволяет вам легко перемещаться и манипулировать DOM, удаляя атрибуты узла, например onmouseover (или целые элементы, такие как *).1004 *), перед тем как выписать или отправить в потоковом режиме.В зависимости от того, насколько диким является ваш html, вам может понадобиться сначала очистить его - jtidy http://jtidy.sourceforge.net/ - это хорошо.

Но, очевидно, выполнение всего этого требует некоторых накладных расходов, если вы делаете это при визуализации страницы.время.

1 голос
/ 11 ноября 2010

Самый простой способ - это не иметь их в первую очередь ... Возможно, имеет смысл разрешить использование только очень простых тегов в полях свободной формы и запретить любые атрибуты.

Возможно, это не тот ответ, который вам нужен, но во многих случаях вы хотите предоставить только возможности разметки, а не полный набор для редактирования.


Аналогичным образом, еще один более простой подход заключается в предоставлении текстового синтаксиса, такого как Markdown, для редактирования. (например, не так много способов использовать область редактирования SO. Синтаксис Markdown + ограниченный список тегов без атрибутов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...