Функция escape

Функция escape применяется к строке и возвращает новую строку, в которой специальные HTML-символы заменены на HTML-сущности. Это необходимо для безопасного отображения данных, полученных от пользователей, чтобы предотвратить внедрение вредоносного кода. Функция экранирует символы <, >, ", ' и &.

Синтаксис

pythonfrom django.utils.html import escape

escaped_string = escape(string)

Пример

Давайте экранируем строку с HTML-тегами:

pythonfrom django.utils.html import escape

user_input = "<script>alert('XSS')</script>"
escaped = escape(user_input)
print(escaped)

Результат выполнения кода:

python"<script>alert('XSS')</script>"

Пример

Давайте экранируем строку с кавычками и амперсандом:

pythonfrom django.utils.html import escape

user_input = 'Hello "world" & friends'
escaped = escape(user_input)
print(escaped)

Результат выполнения кода:

python"Hello "world" & friends"

Пример

Давайте используем экранирование в шаблоне с безопасными данными:

pythonfrom django.utils.html import escape
from django.template import Template, Context

user_comment = "<b>Hello</b> <i>world</i>"
safe_comment = escape(user_comment)

# Использование в шаблоне
template = Template("{{ comment }}")
context = Context({"comment": safe_comment})
result = template.render(context)
print(result)

Результат выполнения кода:

python"<b>Hello</b> <i>world</i>"

Смотрите также

  • функция conditional_escape,
    которая экранирует строку, только если она не помечена как безопасная
  • функция mark_safe,
    которая помечает строку как безопасную для вывода без экранирования
  • класс SafeString,
    который представляет строки, помеченные как безопасные
  • функция strip_tags,
    которая удаляет все HTML-теги из строки