← Все комнаты Путь «Первые шаги» →Путь «Защита (код)» →
НовичокЗащита (код) Код Осенний CTF

Экранирование

Прогресс комнаты 0 / 4
Задание 1Введение

Цель: Экранировать вывод — главная защита от XSS.

Напишите escape_html(s): замените & → &amp;, < → &lt;, > → &gt;, " → &quot;, ' → &#x27;. Это базовая защита от XSS при выводе текста в HTML.

Задание 2Теория и инструменты

XSS возникает, когда данные пользователя попадают в HTML как разметка. Экранирование превращает спецсимволы в сущности.

Шаблонизаторы (Jinja2, React) делают это автоматически — опасно отключать автоэкранирование.

Инструменты

  • Python 3 или Node.js
  • Встроенные тесты в редакторе

Больше теории — в разделе «Обучение: Защита (код)».

Задание 3Практика: напишите код

Примеры

Пример 1
escape_html("\u003cscript\u003ealert(1)\u003c/script\u003e")
→ "\u0026lt;script\u0026gt;alert(1)\u0026lt;/script\u0026gt;"
Пример 2
escape_html("Tom \u0026 Jerry")
→ "Tom \u0026amp; Jerry"

Ещё 6 скрытых тестов.

solution
Ctrl+Enter — отправить Войдите, чтобы отправить

Пошаговый план — открывайте по одному шагу

  1. 1
    Сначала замените &, иначе испортите уже созданные сущности.

Подсказки — каждая до решения стоит −10 очков

Задание 4Как защититься

Используйте автоэкранирование шаблонизатора и Content-Security-Policy как второй рубеж.

Разборы участников

Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.