Функция escape
Функция escape применяется к строке и возвращает новую строку, в которой специальные HTML-символы заменены на HTML-сущности. Это необходимо для безопасного отображения данных, полученных от пользователей, чтобы предотвратить внедрение вредоносного кода. Функция экранирует символы <, >, ", ' и &.
Синтаксис
from django.utils.html import escape
escaped_string = escape(string)
Пример
Давайте экранируем строку с HTML-тегами:
from django.utils.html import escape
user_input = "<script>alert('XSS')</script>"
escaped = escape(user_input)
print(escaped)
Результат выполнения кода:
"<script>alert('XSS')</script>"
Пример
Давайте экранируем строку с кавычками и амперсандом:
from django.utils.html import escape
user_input = 'Hello "world" & friends'
escaped = escape(user_input)
print(escaped)
Результат выполнения кода:
"Hello "world" & friends"
Пример
Давайте используем экранирование в шаблоне с безопасными данными:
from 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)
Результат выполнения кода:
"<b>Hello</b> <i>world</i>"
Смотрите также
-
функция
conditional_escape,
которая экранирует строку, только если она не помечена как безопасная -
функция
mark_safe,
которая помечает строку как безопасную для вывода без экранирования -
класс
SafeString,
который представляет строки, помеченные как безопасные -
функция
strip_tags,
которая удаляет все HTML-теги из строки