Один из ответов на Очистить / перезаписать HTML на стороне клиента предлагает позаимствовать средство очистки HTML на основе белого списка в JS у Google Caja, которое, насколько я могу судить по быстрой прокрутке, реализует анализатор HTML SAX без использования DOM браузера.
Обновление: Кроме того, имейте в виду, что дезинфицирующее средство Caja, по-видимому, было подвергнуто полному профессиональному анализу безопасности, в то время как регулярные выражения известны тем, что их очень легко опечатывать в угрозах безопасности.
Обновление 2017-09-24: Также есть DOMPurify . Я еще не использовал его, но похоже, что он соответствует или превосходит все, что я ищу:
Полагается на функциональность, предоставляемую средой выполнения, где это возможно. (Это важно как для производительности, так и для обеспечения максимальной безопасности, опираясь, насколько это возможно, на проверенные, зрелые реализации.)
- Используется либо DOM браузера, либо jsdom для Node.JS.
Конфигурация по умолчанию, разработанная для минимального удаления, гарантируя при этом удаление javascript.
- Поддерживает HTML, MathML и SVG
- Возвращается к проприетарной, неконфигурируемой
toStaticHTML
Microsoft под IE8 и IE9.
Широкая конфигурация, что делает его пригодным для применения ограничений на ввод, который может содержать произвольный HTML, такой как поле комментариев WYSIWYG или Markdown. (На самом деле, это вершина кучи здесь)
- Поддерживает обычный белый / черный список тегов / атрибутов и белый список регулярных выражений URL
- Имеет специальные параметры для дальнейшей очистки для некоторых распространенных типов метасимволов HTML-шаблонов.
Они серьезно относятся к совместимости и надежности
- Автоматизированные тесты, работающие в 16 различных браузерах, а также в трех основных версиях Node.JS.
- Чтобы гарантировать, что разработчики и хосты CI находятся на одной странице, публикуются файлы блокировки.