Таня Янка. Безопасность веб-приложений. Исчерпывающий гид для начинающих разработчиков....2
Отзывы о книге. Тани Янка «Безопасность веб-приложений. Визуальный гид для начинающих разработчиков»....4
Об авторе....7
О технических редакторах....8
Благодарности....9
Предисловие....10
Введение....12
Сдвиг влево....14
О книге....16
Темы, выходящие за рамки книги....17
Ответы....18
Часть I. Все, что нужно знать о коде, безопасном для публикации в интернете....19
Глава 1. Основы безопасности....20
Обязательство по обеспечению безопасности: «CIA»....20
Конфиденциальность....21
Целостность....22
Доступность....23
«Предполагать взлом»....26
Внутренние угрозы....28
Глубокая защита....30
Принцип наименьших привилегий....32
Безопасность цепи поставок....34
Безопасность через неясность....37
Уменьшение поверхности атаки....39
Жесткое кодирование....39
«Никогда не доверяй, всегда проверяй»....40
Удобство и безопасность....43
Факторы аутентификации....44
Упражнения....47
Глава 2. Требования безопасности....49
Требования....50
Шифрование....52
Никогда нельзя доверять входному потоку системы....53
Кодирование и экранирование....60
Сторонние компоненты....61
Заголовки безопасности: ремни безопасности для веб-приложений....66
Заголовки безопасности на практике....66
Х-XSS-Protection....67
Content-Security-Policy (CSP)....67
X-Frame-Options....72
X–Content-Type-Options....72
Referrer-Policy....73
Strict-Transport-Security (HSTS)....74
Feature-Policy....77
X-Permitted-Cross-Domain-Policies....77
Expect-CT....78
Public Key Pinning Extension for HTTP (HPKP)....81
Обеспечение безопасности файлов cookies....81
Флаг Secure....82
Флаг HTTPOnly....82
Для постоянных cookies....83
Domain....83
Path....85
Same-site....85
Cookie с префиксом....86
Политика конфиденциальности....87
Классификация данных....87
Пароли, хранилище и другие важные решения, касающиеся обеспечения безопасности....90
HTTPS повсюду....98
Настройки TLS....99
Комментарии....100
Резервное копирование и восстановление....100
Элементы безопасности платформы....102
Технический долг = Долг безопасности....103
Загрузка файлов....104
Ошибки и их регистрация....106
Проверка и санитизация вводимых значений....107
Авторизация и аутентификация....110
Параметризированные запросы....110
Параметры URL....111
Принцип наименьших привилегий....111
Чек-лист требований....113
Упражнения....115
Глава 3. Безопасность при проектировании ПО....117
Ошибка проектирования и дефект безопасности....118
Позднее обнаружение ошибки проектирования....119
Сдвиг влево....122
Концепции проектирования безопасного ПО....122
Защита конфиденциальных данных....122
«Никогда не доверяй, всегда проверяй» и «Предполагать взлом»....127
Резервное копирование и откат....128
Валидация на стороне сервера....130
Функции безопасности платформы....131
Изоляция функций безопасности....132
Разделение приложения....134
Управление секретами приложения....134
Повторная аутентификация при транзакционных операциях (предотвращение CSRF-атаки)....135
Разделение производственных данных....136
Защита исходного кода....138
Моделирование угроз....139
Упражнения....146
Глава 4. Безопасность кода ПО....147
Выбор используемой платформы и языка программирования....147
Пример 1....150
Пример 2....150
Пример 3....152
Языки программирования и платформы: правило....152
Сомнительные данные....154
HTTP-глаголы....156
Идентификация....159
Управление сессиями....159
Проверка границ....162
Аутентификация (AuthN)....166
Авторизация (AuthZ)....167
Обработка, регистрация и мониторинг ошибок....172
Правила работы с ошибками....173
Регистрация....174
Мониторинг....176
Упражнения....178
Глава 5. Часто встречающиеся подводные камни....180
OWASP....180
Ранее не упомянутые средства защиты и уязвимости....188
Межсайтовая подделка запроса (CSRF)....188
Подделка запросов со стороны сервера (SSRF)....193
Десериализация....195
Состояние гонки....198
Заключительные комментарии....199
Упражнения....199
Часть II. Как написать безупречный код....201
Глава 6. Тестирование и развертывание....202
Тестирование кода....203
Обзор кода....203
Статическое тестирование безопасности приложений (SAST)....206
Анализ состава программного обеспечения (SCA)....208
Модульное тестирование....211
Инфраструктура как код (IaC) и безопасность как код (SaC)....213
Тестирование приложения....216
Ручное тестирование....217
Браузеры....218
Инструменты разработчика....220
Веб-прокси....220
Фаззинг....222
Динамическое тестирование безопасности приложений (DAST)....224
Инфраструктура....224
Пользовательские приложения....225
Оценка уязвимости, оценка безопасности, пентестирование....226
Гигиена безопасности....230
Стресс-тестирование и тестирование производительности....232
Интеграционное тестирование....233
Интерактивное тестирование безопасности приложений....234
Регрессионное тестирование....235
Тестирование инфраструктуры....237
Тестирование базы данных....238
Тестирование API и веб-серверов....239
Тестирование интеграций....241
Тестирование сети....242
Развертывание....243
Редактирование кода на сервере в реальном времени....245
Публикация из среды IDE....246
«Самодельные» системы развертывания....247
Ранбуки....248
Непрерывная интеграция, непрерывная поставка, непрерывное развертывание....248
Упражнения....250
Глава 7. Программы безопасности приложений....252
Задачи программы по защите приложения....253
Создание и поддержка реестра приложения....254
Техническая возможность обнаружения уязвимостей в написанном, выполняемом и стороннем коде....256
Знания и ресурсы, необходимые для исправления уязвимостей....257
Образование и справочные материалы....258
Предоставление разработчикам инструментов по обеспечению безопасности приложений....260
Проведение одного или нескольких мероприятий по обеспечению безопасности на каждом этапе жизненного цикла разработки системы....261
Внедрение полезных и эффективных инструментов....262
Команда реагирования на инциденты, которая знает, когда вам звонить....263
Постоянное совершенствование программы на основе показателей, экспериментов и обратной связи....265
Метрики....265
Экспериментирование....269
Обратная связь от всех и каждой из заинтересованных сторон....269
Особое замечание о DevOps и Agile....270
Деятельность по обеспечению безопасности приложений....271
Инструменты по обеспечению безопасности приложений....275
Ваша программа безопасности приложения....276
Упражнения....277
Глава 8. Обеспечение безопасности современных систем и приложений....278
API и микросервисы....279
Онлайн-хранилище....284
Контейнеры и оркестровка....285
Бессерверные приложения....288
Инфраструктура как код (IaC)....290
Безопасность как код (SaC)....294
Платформа как услуга (PaaS)....295
Инфраструктура как услуга (IaaS)....297
Непрерывные интеграция, поставка и развертывание....298
Dev(Sec)Ops....299
DevSecOps....302
Облако....303
Облачные вычисления....303
Ориентированность на облако....306
Безопасность облачно-ориентированной среды....307
Облачные потоки....308
Современные инструменты....310
Интерактивное тестирование безопасности приложений IAST....310
Запуск защиты приложений....310
Контроль целостности файлов....311
Инструменты контроля приложений (список одобренного программного обеспечения)....311
Инструменты безопасности, созданные для конвейеров DevOps....313
Инструменты инвентаризации приложений....314
Автоматизация политики наименьших привилегий и других....314
Современные тактические приемы....315
В итоге....317
Упражнения....317
Часть III. Полезная информация о том, как постоянно писать код очень высокого качества....318
Глава 9. Полезные привычки....319
Управление паролями....319
Отмена правил сложности пароля....320
Использование менеджера паролей....322
Парольные фразы....323
Отказ от повторного использования паролей....323
Отказ от ротации паролей....324
Многофакторная аутентификация....326
Реагирование на инциденты....326
Пожарные учения....327
Непрерывное сканирование....330
Технический долг....330
Инвентаризация....331
Другие полезные привычки....332
Политики....332
Загрузки и устройства....334
Блокировка рабочей техники....334
Приватность....335
Итоги....336
Упражнения....338
Глава 10. Непрерывное обучение....339
Что изучать....340
Нападение = защита....340
Не забывайте о «гибких навыках»....340
Лидерство!= менеджмент....343
Варианты обучения....343
Действия, которые можно выполнять самостоятельно....344
Действия, которые можно выполнять на работе (или о чем можно попросить начальника)....347
Действия, которые можно выполнять в отношении своих сотрудников....348
Подотчетность....348
Составление плана....351
Действуйте....352
Упражнения....352
Учебный план....353
Глава 11. Заключение....355
Вопросы, оставшиеся без ответа....357
Когда можно говорить о достаточности предпринятых мер по обеспечению безопасности?....357
Как привлечь руководство к обеспечению безопасности?....361
Как привлечь разработчиков к обеспечению безопасности?....362
С чего начать?....364
Откуда брать помощь?....364
Заключение....365
Приложение. Ответы....366
Примечания....390
Исчерпывающее руководство по безопасности программного обеспечения.Поддерживать безопасность своих продуктов – одна из первостепенных задач любой современной IT-компании. В этой книге вы найдете пошаговые инструкции по тому, как спроектировать безопасную архитектуру веб-сайтов и приложений и защищать ее на всех этапах производства и реализации. Более того, автор даст ответы на самые распространенные вопросы об информационной безопасности и расскажет о лучших практиках гигантов технологической индустрии, например, Microsoft и Google.