Направления / Веб-безопасность: классы дефектов и защита

Защита веб-приложений: заголовки, сессии, защита периметра

Веб-безопасность: классы дефектов и защита

Собираем защитный слой: политики браузера, безопасные сессии, защита от автоматизации и мониторинг.

средний~45 минзаголовкисессиизащитамониторинг

Зачем это нужно

  • Защита веб-приложения — это набор слоёв, а не один заголовок или один фильтр.
  • Многие защитные меры дешевы и закрывают целые классы атак.
  • Без мониторинга невозможно понять, работает ли защита.

Теория

Базовые защитные механизмы: строгая транспортная политика и HTTPS везде, корректные заголовки безопасности (политика безопасности содержимого, запрет встраивания в рамки, ограничение типов содержимого, политика источников), безопасные атрибуты cookie (только HTTP, только через TLS, ограничение пути и домена, ограничение междоменной отправки). Всё это снижает вероятность и последствия клиентских дефектов.

Сессии: идентификатор должен быть случайным и длинным, передаваться только по защищённому каналу, обновляться при входе и повышении привилегий, инвалидироваться при выходе, иметь разумный срок и защиту от фиксации. Пароли, многофакторная аутентификация и восстановление доступа проектируются вместе с политиками ограничения частоты и оповещений.

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

Ключевые концепции

Политики браузера
Заголовки, задающие ограничения для страницы: источники скриптов, встраивание, типы содержимого.
Безопасные атрибуты cookie
Ограничения, не позволяющие читать cookie из скриптов и отправлять его по незащищённому каналу.
Фиксация сессии
Атака, при которой злоумышленник заранее задаёт идентификатор сессии; закрывается обновлением идентификатора при входе.
Ограничение частоты на уровне приложения
Контроль числа операций для защиты от подбора и автоматизации.
Значимые события
События, обязательные к журналированию: вход, смена прав, деньги, доступ к чувствительным данным.
Защита API от перебора
Ограничение перечисления объектов и значений, предсказуемых параметров.

Инструменты

  • Сканеры заголовков и конфигурации (в том числе Mozilla Observatory) для своих сайтов.
  • Средства управления сессиями и библиотеки аутентификации в приложении.
  • Web Application Firewall — как дополнение, не как замена исправлениям.
  • Средства ограничения скорости и защиты от автоматизации.
  • Системы мониторинга и оповещений для серверной части.

Практика в легальных лабораториях

  • Настройте полный набор заголовков безопасности в лабораторном приложении и проверьте оценку внешним сканером.
  • Реализуйте безопасную работу с сессией: случайный идентификатор, обновление при входе, инвалидация при выходе.
  • Настройте ограничение частоты на форме входа и проверьте поведение при превышении.
  • Составьте перечень значимых событий и убедитесь, что они попадают в журнал.
  • Настройте оповещение на серию неудачных входов и проверьте его работу.

Защита, детект и защитные меры

  • Включайте заголовки безопасности и контролируйте их регулярно.
  • Проектируйте сессии и многофакторную аутентификацию вместе, а не по отдельности.
  • Журналируйте значимые события и защищайте журналы от изменения.
  • Проводите регулярные проверки внешнего периметра и обновляйте компоненты.

Правовая рамка и этика

  • Проверка собственных приложений допустима; чужие — только по согласованию или в рамках программы баг-баунти.
  • Сканирование внешних ресурсов без разрешения нарушает закон и условия использования сервисов.

Типичные ошибки

  • Ставить WAF вместо исправления дефекта в коде.
  • Ослаблять политику безопасности содержимого до неработоспособности.
  • Не журналировать денежные операции и изменения прав.

Чек-лист «умею»

  • Умею настроить и проверить заголовки безопасности.
  • Реализую безопасные сессии по чек-листу.
  • Настраиваю ограничение частоты на критичных операциях.
  • Определяю значимые события и журналирую их.
  • Понимаю место WAF в архитектуре защиты.

Вопросы на интервью

  • Какие заголовки безопасности обязательны и зачем?
  • Как вы защитите форму входа от автоматизированного подбора?
  • Почему WAF не заменяет исправление дефектов?

Источники и первоисточники

CyberPath — обучение пентесту, кибербезопасности и сетевой грамотности