Есть ли хорошая библиотека для разбора HTML на основе Javascript? - PullRequest
6 голосов
/ 05 июля 2010

Моя цель - взять HTML, введенный конечным пользователем, удалить определенные небезопасные теги, такие как <script>, и добавить его в документ. Кто-нибудь знает хорошую библиотеку Javascript для очистки HTML?

Я искал и нашел несколько онлайн, в том числе HTML-парсер Джона Ресига , Простой HTML-парсер Эрика Арвидссона и Caja Sanitizer от Google , но у меня нет Мне не удалось найти много информации о том, имели ли люди хороший опыт использования этих библиотек, и я обеспокоен тем, что они недостаточно надежны для работы с произвольным HTML. Будет ли лучше просто отправить HTML-код на мой Java-сервер для очистки?

Ответы [ 2 ]

2 голосов
/ 05 июля 2010

Не лучше ли отправить HTML-код на мой Java-сервер для очистки?

Да.

Фильтрация «небезопасных» входных данных должна выполняться на стороне сервера. Нет другого способа сделать это. Невозможно выполнить фильтрацию на стороне клиента, потому что «сторона клиента» может быть веб-браузером или может быть просто ботом со скриптом.

2 голосов
/ 05 июля 2010

Вы можете анализировать HTML с помощью jQuery , но я уверен, что любой подход к очистке, основанный на черном списке (то есть фильтрация), потерпит неудачу - вам, вероятно, понадобится подход, основанный на фильтрации, и в конечном итоге В любом случае, вы не хотите полагаться на JavaScript для обеспечения безопасности. В любом случае для справки вы можете использовать jQuery для DOM-разбора следующим образом:

var htmlS = "<html>etc.etc.";
$(htmlS).remove("script"); /* DONT RELY ON THIS FOR SECURITY */
...