Python Bleach: есть ли способ удалить запрещенные, а не разрешенные теги?
Я знаю, что Bleach принимает список ALLOWED_TAGS
и удаляет все теги, отсутствующие в этом списке, при выполнении clean()
.
Есть ли способ перевернуть это и удалить теги на основе тех, которые определены как запрещенные? Другими словами, начните с предположения, что все разрешено, но затем удалите все запрещенные теги.
Например, если был DISALLOWED_TAGS
, все в этом списке будет удалено. Однако я не знаю ни одного подобного варианта.
Я думал о настройке ALLOWED_TAGS
функции (как ALLOWED_ATTRIBUTES
позволяет), но он принимает только список.
Меня также интересует, можно ли это сделать для ALLOWED_STYLES
.
Я просто смотрю на это с теоретической точки зрения, а не на то, действительно ли это лучшая практика.
1 ответ
Нет, специально для Bleach нет возможности и он не будет поддерживаться в будущем. Первая запись на странице с целями проекта говорит, что Bleach...
Всегда используйте подход на основе разрешенных списков
Bleach всегда должен использовать подход на основе разрешенных списков для фильтрации разметки. Указание запрещенных списков чревато ошибками и не обязательно в будущем.
Например, вам необходимо разрешить использование атрибута onclick, а не отключать все остальные атрибуты on*. В будущих версиях HTML могут быть добавлены новые обработчики событий, такие как ontouch, которые старые запреты не предотвратят.