Выбор ответа Junior Безопасность веб-приложения спрашивают часто обновлено
Фильтр safe в шаблоне
Вопрос
Чем опасен {{ comment.text|safe }} в шаблоне Django?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Отключает автоэкранирование: <script из комментария выполнится у читателей. Django по умолчанию экранирует <, , &, кавычки. safe и marksafe говорят «этот текст уже безопасен», и он выводится как есть.
Варианты ответа
- Делает текст недоступным для поисковиков, потому что он рендерится как HTML-блок
- Отключает автоэкранирование:
<script>из комментария выполнится у читателейправильный ответ - Замедляет рендер шаблона, так как Django заново компилирует его при каждом выводе
- Ничем:
safeпроверяет текст санитайзером и удаляет опасные теги перед выводом
Разбор
Django по умолчанию экранирует <, >, &, кавычки. |safe и mark_safe говорят «этот текст уже безопасен», и он выводится как есть. Для пользовательского ввода это прямой путь к XSS. Если нужен форматированный текст, его очищают санитайзером по белому списку тегов при сохранении или выводе. Название фильтра вводит в заблуждение: он ничего не проверяет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.