Сопоставление Middle XSS и CSP обновлено

Опасная конструкция и безопасная замена

Вопрос

Сопоставьте опасную конструкцию и безопасную замену.

Попробуйте сами

Нажмите слева, потом подходящее справа.

Показать ответ и разбор

Коротко

Почти у каждого опасного API есть безопасный аналог. Хорошая практика: запретить опасные варианты линтером и разрешать их точечно после ревью.

Правильные пары

el.innerHTML = userText
el.textContent = userText
<div dangerouslySetInnerHTML={{__html: html}} />
Пропустить html через DOMPurify или выводить текстом
<a href={userUrl}>
Проверить схему: только http, https или относительный путь
setTimeout("update(" + id + ")", 100)
setTimeout(() => update(id), 100)
{{ comment|safe }} в Jinja2
{{ comment }} с автоэкранированием

Разбор

Почти у каждого опасного API есть безопасный аналог. Хорошая практика: запретить опасные варианты линтером и разрешать их точечно после ревью.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.