Предисловие....20
Изменения во втором издании....20
Исходные требования и цели обучения....20
Почему примеры написаны на JavaScript....21
Почему книга представляет концепции, а не инструменты....22
Требования к уровню знаний....22
Минимальный набор навыков....23
Кому больше всего пригодится эта книга....23
Инженеры-программисты и разработчики веб-приложений....24
Инженеры-программисты....24
Разработчики веб-приложений....24
Общие цели обучения....25
Инженеры по безопасности, пентестеры и охотники за багами....25
Структура книги....26
Разведка....27
Нападение....27
Защита....29
Язык и терминология....31
Резюме....35
Условные обозначения....36
Благодарности....36
От издательства....37
Отзывы о первом издании....19
Глава 1....38
История защиты программного обеспечения....38
Истоки хакерства....38
«Энигма», 1930-е....39
Автоматизированный взлом шифра «Энигмы», 1940-е....42
Фрикинг, 1950-е....45
Метод борьбы с фрикингом, 1960-е....47
Начало компьютерного взлома, 1980-е....48
Расцвет Всемирной паутины, 2000-е....50
Современные хакеры, после 2015-го....52
Резюме....55
Часть I. Разведка....57
Глава 2. Введение в разведку веб-приложений....59
Сбор информации....59
Карта веб-приложения....61
Резюме....63
Глава 3. Структура современных веб-приложений....64
Сравнение современных и более ранних версий приложений....64
REST API....66
Формат JSON....69
JavaScript....71
Переменные и их область видимости....72
Функции....74
Контекст....75
Прототипное наследование....77
Асинхронное выполнение кода....79
Программный интерфейс DOM браузера....82
Фреймворки для SPA....84
Системы аутентификации и авторизации....85
Аутентификация....86
Авторизация....86
Веб-серверы....87
Базы данных на стороне сервера....88
Хранение данных на стороне клиента....89
GraphQL....91
Системы управления версиями....92
Сети доставки контента и кэширование....94
Резюме....96
Глава 4. Поиск субдоменов....97
Множество приложений в рамках одного домена....97
Встроенные в браузер инструменты анализа....98
Общедоступная информация....101
Кэши поисковых систем....101
Поиск в архиве....104
Социальные профили....105
Атаки на передачу зоны....109
Брутфорс субдоменов....111
Перебор по словарю....116
Резюме....118
Глава 5. Анализ API....119
Обнаружение конечной точки....119
Механизмы аутентификации....123
Разновидности конечных точек....124
Основные разновидности....125
Специализированные разновидности....126
Резюме....127
Глава 6. Обнаружение сторонних зависимостей....128
Клиентские фреймворки....128
Фреймворки для одностраничных приложений....129
Библиотеки JavaScript....131
Библиотеки CSS....132
Фреймворки на стороне сервера....133
Заголовки....133
Стандартные сообщения об ошибке и страницы 404....134
Базы данных....136
Резюме....138
Глава 7. Поиск слабых мест в архитектуре приложения....139
Признаки безопасной и небезопасной архитектуры....140
Уровни безопасности....144
Заимствование и перекрой....145
Резюме....147
Глава 8. Итоги части I....148
Часть II. Нападение....149
Глава 9. Введение во взлом веб-приложений....151
Мышление хакера....151
Применение данных, полученных в процессе разведки....152
Глава 10. Межсайтовый скриптинг....154
Обнаружение XSS-уязвимости....154
Хранимый XSS....158
Отраженный XSS....159
XSS-атака на базе DOM....162
XSS с мутациями....164
Обход фильтров....166
Самозакрывающиеся теги HTML....167
Относительные URL без протокола....167
Некорректные теги....168
Экранированные последовательности....168
Многоязычные полезные нагрузки....169
Приемники и источники XSS....170
Резюме....172
Глава 11. Подделка межсайтовых запросов....173
Подделка параметров запроса....173
Изменение содержимого запроса GET....178
CSRF-атака на конечные точки POST....179
Обход защиты CSRF....181
Проверка заголовков....181
Пулы токенов....181
Слабые токены....182
Типы контента....182
Обход фильтров из регулярных выражений....183
iframe....184
AJAX....184
Формы нулевого взаимодействия....184
Резюме....185
Глава 12. Атака на внешние сущности XML....186
Основы XXE....186
Атака напрямую....187
Непрямая XXE-атака....190
Внеполосная утечка данных....192
Захват учетной записи....193
Получение данных о пользователе....193
Получение хешей паролей....194
Взлом хешей паролей....195
Удаленный вход по SSH....195
Резюме....196
Глава 13. Внедрение кода....197
Внедрение SQL-кода....197
Внедрение кода....201
Внедрение команд....205
Приемы внедрения для эксфильтрации данных....208
Основы эксфильтрации данных....208
Внутриполосная эксфильтрация данных....209
Внеполосная эксфильтрация данных....209
Логическая эксфильтрация данных....210
Обход общей защиты....211
Резюме....212
Глава 14. Отказ в обслуживании....213
ReDoS-атака....214
Логические DoS-уязвимости....217
Распределенная DoS-атака....220
Продвинутые DoS-атаки....221
Атаки YoYo....221
Атака на функции сжатия....221
DoS-атаки проксированием....222
Резюме....223
Глава 15. Атаки на данные и объекты....224
Массовое присваивание....224
Небезопасная прямая ссылка на объект....226
Атаки сериализации....227
Основы сериализации....227
Атака на слабую сериализацию....228
Резюме....229
Глава 16. Атаки на стороне клиента....230
Атаки на клиента в браузере....230
Атаки, нацеленные на клиента....231
Атаки, характерные для клиента....231
Достоинства атак на стороне клиента....231
Атаки загрязнения прототипа....232
Основы загрязнения прототипа....232
Атака загрязнением прототипа....235
Архетипы загрязнения прототипов....236
Кликджекинг....237
Эксплуатация камеры и микрофона....237
Создание эксплойтов для кликджекинга....238
Табнаббинг и обратный табнаббинг....239
Традиционный табнаббинг....239
Обратный табнаббинг....240
Резюме....242
Глава 17. Эксплуатация сторонних зависимостей....243
Методы интеграции....245
Ветви и вилки....245
Приложения с собственным сервером....246
Интеграция на уровне кода....247
Диспетчеры пакетов....248
JavaScript....248
Java....250
Другие языки....251
База данных общеизвестных уязвимостей....252
Резюме....254
Глава 18. Уязвимости в бизнес-логике....255
Уязвимости нестандартных математических вычислений....256
Побочные эффекты....257
Безналичные атаки....259
Уязвимости стандартов и соглашений....261
Эксплуатация уязвимостей бизнес-логики....263
Резюме....264
Глава 19. Итоги части II....265
Часть III. Защита....267
Глава 20. Защита современных веб-приложений....268
Архитектура защищенного ПО....269
Глубокий анализ кода....269
Поиск уязвимости....270
Анализ уязвимости....271
Управление уязвимостями....271
Регрессионное тестирование....272
Меры по снижению риска....272
Прикладные техники разведки и нападения....273
Резюме....273
Глава 21. Безопасная архитектура приложений....274
Анализ требований к ПО....274
Аутентификация и авторизация....276
Протоколы SSL и TLS....276
Защита учетных данных....277
Хеширование учетных данных....278
Многофакторная аутентификация....280
Личные данные и финансовая информация....282
Поиск....282
Архитектура нулевого доверия....283
История философии нулевого доверия....284
Явное и неявное доверие....284
Аутентификация и авторизация....285
Резюме....285
Глава 22. Безопасная конфигурация приложений....287
Политика безопасности контента....287
Реализация CSP....288
Структура CSP....288
Важные директивы....288
Источники CSP и списки источников....289
Строгая политика CSP....290
Пример политики CSP....291
Совместное использование ресурсов разными источниками....291
Типы запросов CORS....292
Простые запросы CORS....292
Предварительные запросы CORS....293
Реализация CORS....293
Заголовки....294
Строгая транспортная безопасность....294
Политика доступа к окнам, открытым разными источниками (COOP)....295
Политика доступа для ресурсов из разных источников (CORP)....296
Заголовки, влияющие на безопасность....297
Устаревшие заголовки безопасности....297
Файлы cookie....298
Создание и защита файлов cookie....298
Тестирование файлов cookie....300
Создание изолированного окружения....300
Традиционный метод с фреймами iframe....301
Web Workers....302
Целостность подресурса....302
Shadow Realms....303
Резюме....304
Глава 23. Безопасность пользовательского интерфейса....305
Раскрытие и перечисление информации....305
Раскрытие информации....306
Перечисление....308
Рекомендации по безопасности пользовательского интерфейса....310
Резюме....312
Глава 24. Моделирование угроз....313
Проектирование модели угроз....313
Пример моделирования угроз....314
Логическое описание....314
Техническое описание....315
Определение угроз (субъекты угроз)....318
Определение угроз (векторы атак)....319
Определение реализованных мер по смягчению последствий....322
Определение рисков без реализованных мер противодействия....322
Резюме....325
Глава 25. Проверка безопасности кода....326
Начало проверки....327
Основные типы уязвимостей и пользовательские логические ошибки....328
С чего начать проверку безопасности....330
Антипаттерны безопасного программирования....332
Черные списки....332
Шаблонный код....334
Доверие по умолчанию....334
Разделение клиента и сервера....335
Резюме....335
Глава 26. Обнаружение уязвимостей....337
Автоматизированная проверка....337
Статический анализ....338
Динамический анализ....339
Регрессионное тестирование....340
Программы ответственного раскрытия информации....343
Программы вознаграждения за обнаружение ошибок....344
Сторонние пентестеры....345
Резюме....346
Глава 27. Управление уязвимостями....347
Воспроизведение уязвимостей....347
Классификация уязвимостей....348
Общая система оценки уязвимостей....348
CVSS. Базовая метрика....349
CVSS. Временная метрика....352
CVSS. Контекстная метрика....353
Усовершенствованная классификация уязвимостей....355
Что делать потом....355
Резюме....356
Глава 28. Противодействие XSS-атакам....357
Приемы написания кода для противодействия XSS....357
Очистка пользовательского ввода....359
Приемник DOMParser....360
Приемник SVG....361
Приемник Blob....361
Санация гиперссылок....362
Символьные сущности в HTML....363
CSS XSS....364
Политика защиты контента для предотвращения XSS....365
Директива script-src....365
Ключевые слова unsafe-eval и unsafe-inline....366
Внедрение CSP....367
Резюме....368
Глава 29. Защита от CSRF....369
Проверка заголовков....369
CSRF-токен....371
CSRF-токены без сохранения состояния....372
Противодействие CRSF на уровне кода....372
Запросы GET без сохранения состояния....373
Снижение риска CSRF на уровне приложения....374
Резюме....376
Глава 30. Защита от XXE-атак....377
Оценка других форматов данных....377
Дополнительные риски, связанные с XXE....379
Резюме....379
Глава 31. Противодействие внедрению....380
Противодействие внедрению SQL-кода....380
Распознавание внедрения SQL-кода....381
Параметризованные запросы....382
Более специфические методы защиты....384
Защита от других видов внедрения....384
Потенциальные цели внедрения....385
Принцип минимальных привилегий....385
Белый список команд....386
Резюме....388
Глава 32. Противодействие DoS-атакам....389
Противодействие атакам ReDoS....389
Защита от логических DoS-атак....390
Защита от DDoS....391
Резюме....393
Глава 33. Защита данных и объектов....394
Защита от массового присваивания....394
Проверка и белый список....395
Объекты передачи данных....395
Защита от IDOR....395
Защита от атак на сериализацию....396
Резюме....396
Глава 34. Защита от атак на стороне клиента....397
Защита от загрязнения прототипов....397
Санация ключей....397
Замораживание прототипа....399
Пустые прототипы....399
Защита от кликджекинга....400
Директива frame-ancestors....400
Антифрейминг....401
Защита от табнаббинга....402
Политика доступа к окнам, открытым разными источниками....402
Блокировка ссылок....402
Политики изоляции....403
Резюме....405
Глава 35. Защита сторонних зависимостей....406
Оценка дерева зависимостей....406
Моделирование дерева зависимости....407
Деревья зависимостей на практике....407
Автоматизированная оценка....408
Техники безопасной интеграции....408
Разделение интересов....408
Безопасное управление пакетами....409
Резюме....410
Глава 36. Устранение уязвимостей в бизнес-логике....411
Устранение уязвимостей на уровне архитектуры....411
Статистическое моделирование....413
Моделирование входных данных....413
Моделирование действий....414
Разработка модели....414
Анализ модели....416
Резюме....416
Глава 37. Итоги части III....417
Заключение....418
История безопасности программного обеспечения....418
Разведка....420
Нападение....421
Защита....424
Что дальше....428
Об авторе....429
Иллюстрация на обложке....430
Среди огромного количества информации по сетевой и ИТ-безопасности практически не найти книг по безопасности веб-приложений.Познакомьтесь на практике с разведкой, защитой и нападением!Вы изучите методы эффективного исследования и анализа веб-приложений, даже тех, к которым нет прямого доступа, узнаете самые современные хакерские приемы и научитесь защищать собственные разработки.