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

Аудит CSP

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

Цель: Разбирать и проверять Content-Security-Policy.

Напишите csp_problems(csp). Директивы разделены ;, внутри — имя и источники через пробел; повторная директива игнорируется. Проблемы: no-default-src — нет default-src; для script-src (или default-src, если её нет) — unsafe-inline, unsafe-eval, wildcard (источник *). Верните отсортированный список.

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

CSP ограничивает источники скриптов и стилей. 'unsafe-inline', 'unsafe-eval' и * почти полностью отключают защиту от XSS.

Если script-src не задана, для скриптов действует default-src.

Инструменты

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

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

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

Примеры

Пример 1
csp_problems("default-src \u0027self\u0027")
→ []
Пример 2
csp_problems("script-src \u0027self\u0027 \u0027unsafe-inline\u0027")
→ ["no-default-src", "unsafe-inline"]

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

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

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

  1. 1
    Разбейте политику по ; и запомните первую директиву с каждым именем.

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

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

Используйте nonce или hash вместо unsafe-inline и проверяйте политику в CSP Evaluator.

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

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