Экранирование
Задание 1Введение
Цель: Экранировать вывод — главная защита от XSS.
Напишите escape_html(s): замените & → &, < → <, > → >, " → ", ' → '. Это базовая защита от XSS при выводе текста в HTML.
Задание 2Теория и инструменты
XSS возникает, когда данные пользователя попадают в HTML как разметка. Экранирование превращает спецсимволы в сущности.
Шаблонизаторы (Jinja2, React) делают это автоматически — опасно отключать автоэкранирование.
Инструменты
- Python 3 или Node.js
- Встроенные тесты в редакторе
Больше теории — в разделе «Обучение: Защита (код)».
Задание 3Практика: напишите код
Примеры
escape_html("\u003cscript\u003ealert(1)\u003c/script\u003e")
→ "\u0026lt;script\u0026gt;alert(1)\u0026lt;/script\u0026gt;"escape_html("Tom \u0026 Jerry")
→ "Tom \u0026amp; Jerry"Ещё 6 скрытых тестов.
Пошаговый план — открывайте по одному шагу
- 1Сначала замените
&, иначе испортите уже созданные сущности. - 2Затем
<,>,",'. - 3Проверьте на строке с тегом script.
Подсказки — каждая до решения стоит −10 очков
Задание 4Как защититься
Используйте автоэкранирование шаблонизатора и Content-Security-Policy как второй рубеж.
Разборы участников
Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.