Там в removetags, но это черный список подход, который не удается удалить тег, когда они не выглядят так же, как хорошо сформированные теги Django ожидает, и, конечно, поскольку он не пытается удалить атрибуты, он полностью уязвим для 1000 других способов инъекции скрипта, которые не включают тег <script>
. Это ловушка, предлагающая иллюзию безопасности, фактически не обеспечивающая реальной безопасности.
Подходы с использованием HTML-санитарии, основанные на взломе регулярных выражений, почти неизбежно полностью терпят неудачу. Использование реального парсера HTML для получения объектной модели для представленного контента, то фильтрация и повторная сериализация в хорошо известном формате, как правило, является самым надежным подходом.
Если ваш текстовый редактор выводит XHTML, это просто, просто используйте minidom или etree для анализа документа, затем перейдите к нему, удалив все, кроме хорошо известных элементов и атрибутов, и, наконец, вернитесь к безопасному XML. Если, с другой стороны, он выплескивает HTML или позволяет пользователю вводить необработанный HTML-код, вам может понадобиться использовать что-то вроде BeautifulSoup. См. this question для обсуждения.
Фильтрация HTML - это сложная и сложная тема, поэтому многие предпочитают языки с расширением текста.
-1 Это хуже, чем ничего, поскольку это создает иллюзию безопасности без реальных преимуществ. Существует миллион способов такого подхода к черным спискам. –