Наш backend-разработчик Коля прочитал популярную книгу Тани Янки «Безопасность web-приложений» и заметил, что многие советы либо устарели, либо проходят в категории капитана Очевидность. Например, в книге присутствуют советы вроде «резервные копии бесполезны, если их нельзя использовать для восстановления данных», или «сделайте пароль подлиннее, чтобы он был безопаснее». В ответ на такие очевидные истины возникает закономерный вопрос — а применимо ли что-то из этого к реальным задачам разработки? Поэтому после прочтения Николай книгу не сжег, а выделил из прочитанного ряд полезных идей, дополнил это актуальными инструментами и объединил это все в статье.
По мере чтения книги меня все больше терзали вопросы: «Зачем это все?» и «Что это нам дает на практике?». На почти 450 страницах автор подробно рассказывает о важности базовых мер безопасности, но большая часть информации вызывает недоумение: советы повторяются, иногда по десять раз, а примеры порой настолько просты, что напоминают инструкции для новичков. Я постарался отфильтровать самое полезное из этой книги и дополнил проверенными инструментами, которые сам знаю и которыми пользуюсь.
Безопасность на этапе проектирования
- Кто?
 - Что?
 - Зачем?
 - Как злоумышленник может изменить данные для аутентификации?
 - Что происходит, когда злоумышленник может прочитать данные профиля пользователя?
 - Что происходит, когда доступ к базе данных профилей пользователя запрещен?
 
OWASP Top 10
- нарушение контроля доступа;
 - недочёты криптографии;
 - инъекции;
 - небезопасный дизайн;
 - небезопасная конфигурация;
 - использование уязвимых или устаревших компонентов;
 - ошибки идентификации и аутентификации;
 - нарушения целостности программного обеспечения и данных;
 - ошибки логирования и мониторинга безопасности;
 - подделка запросов на стороне сервера.
 
<script>alert("XSS атака!")</script>Для защиты от SSRF важно:
- ограничить разрешенные адреса и проверять ссылки;
 - ограничивать доступ к внутренним сервисам через сетевые правила и фильтрацию;
 - использовать списки доверенных доменов, с которых можно загружать ресурсы.
 
Под конец в книге все же оказались полезные моменты, в том числе некоторые методы для выявления уязвимостей, о которых даже опытные разработчики могут слышать впервые. Но тут, как и раньше, информация в книге скудна, так что пришлось дополнительно разбираться самостоятельно. Давайте кратко пройдемся по этому.