Python Bleach: есть ли способ удалить запрещенные, а не разрешенные теги?

Я знаю, что Bleach принимает список ALLOWED_TAGS и удаляет все теги, отсутствующие в этом списке, при выполнении clean().

Есть ли способ перевернуть это и удалить теги на основе тех, которые определены как запрещенные? Другими словами, начните с предположения, что все разрешено, но затем удалите все запрещенные теги.

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

Я думал о настройке ALLOWED_TAGS функции (как ALLOWED_ATTRIBUTES позволяет), но он принимает только список.

Меня также интересует, можно ли это сделать для ALLOWED_STYLES.

Я просто смотрю на это с теоретической точки зрения, а не на то, действительно ли это лучшая практика.

1 ответ

Решение

Нет, специально для Bleach нет возможности и он не будет поддерживаться в будущем. Первая запись на странице с целями проекта говорит, что Bleach...

Всегда используйте подход на основе разрешенных списков

Bleach всегда должен использовать подход на основе разрешенных списков для фильтрации разметки. Указание запрещенных списков чревато ошибками и не обязательно в будущем.

Например, вам необходимо разрешить использование атрибута onclick, а не отключать все остальные атрибуты on*. В будущих версиях HTML могут быть добавлены новые обработчики событий, такие как ontouch, которые старые запреты не предотвратят.

Другие вопросы по тегам