Если html исходит из надежного источника, такого как вы, то это (скорее всего) безопасно. Но если вы разрешаете пользователям вашего сайта отправлять свою собственную html разметку, то это небезопасно.
Но иногда необходимо отображать разметку html в шаблонах django, и нет другого выбора, кроме как использовать фильтр safe
. В этих случаях решение состоит в том, чтобы «санировать» код html.
«Очистка» означает, что вы сохраняете в данных только безопасные теги html и удаляете все небезопасные или нежелательные теги (например, теги script
или style
).
Для санации данных вы можете использовать библиотеку bleach
.
Вот пример (взят из документации):
import bleach
bleach.clean('an <script>evil()</script> example')
# Output -> u'an <script>evil()</script> example'
Для этой библиотеки также есть приложение django: django-bleach
.