Защита веб-приложений: заголовки, сессии, защита периметра
Веб-безопасность: классы дефектов и защитаСобираем защитный слой: политики браузера, безопасные сессии, защита от автоматизации и мониторинг.
Зачем это нужно
- Защита веб-приложения — это набор слоёв, а не один заголовок или один фильтр.
- Многие защитные меры дешевы и закрывают целые классы атак.
- Без мониторинга невозможно понять, работает ли защита.
Теория
Базовые защитные механизмы: строгая транспортная политика и HTTPS везде, корректные заголовки безопасности (политика безопасности содержимого, запрет встраивания в рамки, ограничение типов содержимого, политика источников), безопасные атрибуты cookie (только HTTP, только через TLS, ограничение пути и домена, ограничение междоменной отправки). Всё это снижает вероятность и последствия клиентских дефектов.
Сессии: идентификатор должен быть случайным и длинным, передаваться только по защищённому каналу, обновляться при входе и повышении привилегий, инвалидироваться при выходе, иметь разумный срок и защиту от фиксации. Пароли, многофакторная аутентификация и восстановление доступа проектируются вместе с политиками ограничения частоты и оповещений.
Периметр и приложение: фильтрация трафика, защита от автоматизированного подбора на уровне приложения, ограничение скорости на критичных операциях, защита API от перебора значений. Мониторинг: значимые события входа, изменения прав, работа с деньгами, доступ к чувствительным данным, ошибки доступа. Журналы должны соответствовать уровню риска: для денежных операций обязательна полнота и защита от подделки.
Ключевые концепции
- Политики браузера
- Заголовки, задающие ограничения для страницы: источники скриптов, встраивание, типы содержимого.
- Безопасные атрибуты cookie
- Ограничения, не позволяющие читать cookie из скриптов и отправлять его по незащищённому каналу.
- Фиксация сессии
- Атака, при которой злоумышленник заранее задаёт идентификатор сессии; закрывается обновлением идентификатора при входе.
- Ограничение частоты на уровне приложения
- Контроль числа операций для защиты от подбора и автоматизации.
- Значимые события
- События, обязательные к журналированию: вход, смена прав, деньги, доступ к чувствительным данным.
- Защита API от перебора
- Ограничение перечисления объектов и значений, предсказуемых параметров.
Инструменты
- Сканеры заголовков и конфигурации (в том числе Mozilla Observatory) для своих сайтов.
- Средства управления сессиями и библиотеки аутентификации в приложении.
- Web Application Firewall — как дополнение, не как замена исправлениям.
- Средства ограничения скорости и защиты от автоматизации.
- Системы мониторинга и оповещений для серверной части.
Практика в легальных лабораториях
- Настройте полный набор заголовков безопасности в лабораторном приложении и проверьте оценку внешним сканером.
- Реализуйте безопасную работу с сессией: случайный идентификатор, обновление при входе, инвалидация при выходе.
- Настройте ограничение частоты на форме входа и проверьте поведение при превышении.
- Составьте перечень значимых событий и убедитесь, что они попадают в журнал.
- Настройте оповещение на серию неудачных входов и проверьте его работу.
Защита, детект и защитные меры
- Включайте заголовки безопасности и контролируйте их регулярно.
- Проектируйте сессии и многофакторную аутентификацию вместе, а не по отдельности.
- Журналируйте значимые события и защищайте журналы от изменения.
- Проводите регулярные проверки внешнего периметра и обновляйте компоненты.
Правовая рамка и этика
- Проверка собственных приложений допустима; чужие — только по согласованию или в рамках программы баг-баунти.
- Сканирование внешних ресурсов без разрешения нарушает закон и условия использования сервисов.
Типичные ошибки
- Ставить WAF вместо исправления дефекта в коде.
- Ослаблять политику безопасности содержимого до неработоспособности.
- Не журналировать денежные операции и изменения прав.
Чек-лист «умею»
- Умею настроить и проверить заголовки безопасности.
- Реализую безопасные сессии по чек-листу.
- Настраиваю ограничение частоты на критичных операциях.
- Определяю значимые события и журналирую их.
- Понимаю место WAF в архитектуре защиты.
Вопросы на интервью
- Какие заголовки безопасности обязательны и зачем?
- Как вы защитите форму входа от автоматизированного подбора?
- Почему WAF не заменяет исправление дефектов?