C# глазами хакера
Год издания: 2025
Автор: Фленов М. Е.
Издательство: БХВ-Петербург
ISBN: 978-5-9775-2021-8
Серия: Глазами хакера
Язык: Русский
Формат: DjVu
Качество: Отсканированные страницы + слой распознанного текста
Интерактивное оглавление: Да
Количество страниц: 288
Описание: Подробно рассмотрены все аспекты безопасности от теории до реальных реализаций .NET-приложений на языке C#. Рассказано, как обеспечивать безопасную регистрацию, авторизацию и поддержку сессий пользователей. Перечислены уязвимости, которые могут быть присущи веб-сайтам и Web API, описано, как хакеры могут эксплуатировать уязвимости и как можно обеспечить безопасность приложений. Даны основы оптимизации кода для обработки максимального количества пользователей с целью экономии ресурсов серверов и денег на хостинг. Рассмотрены сетевые функции: проверка соединения, отслеживание запроса, доступ к микросервисам, работа с сокетами и др. Приведены реальные примеры атак хакеров и способы защиты от них. Во втором издании добавлены новые примеры безопасности, рассмотрены вопросы реализации технологий OAuth2 и Single Sign On.
Для веб-программистов, администраторов и специалистов по безопасности
- Теория безопасности кода
- Проблемы авторизации
- Безопасность веб-приложений на реальных примерах
- Оптимизация кода
- Защита Web API
- Сетевые функции
- Реальные примеры атак хакеров и защиты от них
- Проблемы и реализация OAuth2 и Single Sign On
Примеры страниц (скриншоты)
Оглавление
Предисловие 7
Об авторе 7
О книге 8
Благодарности 8
Глава 1. Теория безопасности 10
1.1. Комплексная защита 11
1.2. Сдвиг влево 14
1.2.1. Обучение 15
1.2.2. Сбор требований 16
1.2.3. Безопасность на этапе разработки 16
1.2.4. Внешние компоненты 17
1.2.5. Статические анализаторы кода 17
1.2.6. Динамический анализатор кода 18
1.2.7. Испытание на проникновение 18
1.2.8. Отчеты 18
1.3. Проект О WASP 19
1.4. Отказ в обслуживании 20
1.5. Управление кодом 22
1.6. Стабильность кода: нулевые исключения 24
1.7. Исключительные ситуации 26
1.8. Журналы ошибок и аудит 27
1.9. Ошибки нужно исправлять 29
1.10. Отгружаем легко и часто 35
1.10.1. Обновление базы данных 37
1.10.2. Копирование файлов 38
1.10.3. Распределенное окружение 39
1.11. Шифрование трафика 40
1.12. POST или GET? 42
1.13. Ограничение времени выполнения 45
1.14. Кто проверяет данные? 46
Глава 2. Аутентификация и авторизация 47
2.1. Шаблон приложения 47
2.2. Регистрация пользователей 50
2.3. Форма регистрации 51
2.3.1. Корректные данные регистрации 53
2.3.2. Email с плюсом и точкой 57
2.4. Хранение паролей 58
2.4.1. Хеширование 59
2.4.2. МО5-хеширование 60
2.4.3. Безопасное хеширование 64
2.4.4. И еще немного о безопасности 64
2.5. Создание посетителей 65
2.6. Captcha 66
2.6.1. Настраиваем Google reCAPTCHA 67
2.6.2. Пример использования геСАРТСНА 69
2.6.3. Отменяем капчу 72
2.7. Аутентификация 73
2.7.1. Базовая аутентификация 73
2.7.2. Журналирование и защита от перебора 75
2.7.3. Защищаемся от перебора 76
2.8. Запомни меня 79
2.8.1. Зашифрованный якорь 80
2.8.2. Опасность HttpOnfy 83
2.8.3. Уникальные токены 84
2.9. Автозаполнение 87
2.10. Авторизация 87
2.11. Железобетонная проверка 92
2.12. Протокол OAuth 93
2.12.1. Конфигурирование приложения «Яндекс» OAuth 95
2.12.2. Создаем клиента 99
2.12.3. Что дальше? 103
2.13. Делим авторизацию 103
2.14. Защита сессии 104
2.15. Многоуровневая авторизация 105
2.16. Microsoft Identity 107
Глава 3. Безопасность .NET-приложеннн 111
3.1. Инъекция SQL: основы 111
3.1.1. SQL-уязвимость в ADO.NET 112
3.1.2. Защита от SQL-иньекции 115
3.2. Dapper ORM 118
3.3. Entity Framework 122
3.4. Отправка электронной почты 126
3.4.1. Очереди сообщений 127
3.4.2. Работа с очередью 129
3.4.3. Отправляем письма 131
3.5. Подделка параметров 133
3.6. Флуд 140
3.7. XSS: межсайтовый скриптинг 142
3.7.1. Защита от XSS в .NET 143
3.7.2. Примеры эксплуатации XSS 146
3.7.3. Типы XSS 148
3.7.4. Хранимая XSS 149
3.7.5. XSS: текст внутри тега 155
3.7.6. Скрипты 157
3.7.7. Атака через промежуточный слой 158
3.7.8. HTML-расширения 159
3.7.9. Вывод из контроллера 160
3.7.10. Эксплуатация XSS-уязвимости 161
3.8. Политика безопасности контента 161
3.8.1. CORS на страже контента 162
3.8.2. Источники загрузки 162
3.8.3. Тестирование политики 165
3.8.4. Разрешенные источники 168
3.9. SQL Injection: доступ к недоступному 170
3.10. CSRF: межсайтовая подделка запроса 172
3.11. Загрузка файлов 177
3.12. Переадресация 179
3.13. Защита от DoS 183
3.14. Кликджекинг 186
Глава 4. О производительности в целом 191
4.1. Основы 191
4.2. Когда нужно оптимизировать? 193
4.3. Оптимизация и рефакторинг 194
4.4. Отображение данных 195
4.5. Асинхронное выполнение запросов 198
4.6. Параллельное выполнение 199
4.7. LINQ 200
4.8. Обновление .NET 202
Глава 5. Производительность в .NET 203
5.1. Типы данных 203
5.1.1. Производительность 203
5.1.2. Отличие структур от классов 205
5.1.3. Ссылки на структуры 210
5.2. Виртуальные методы 212
5.3. Управление памятью 214
5.4. Закрытие соединений с базой данных 217
5.5. Циклы 220
5.6. Строки 221
5.7. Исключительные ситуации 223
5.8. Странный HttpClient 224
5.9. Класс ArrayPool 226
5.10. Параметризованные запросы к БД 228
Глава 6. Сеть 230
6.1. Проверка соединения 230
6.2. Отслеживание запроса 231
6.3. Класс НТТР-клиент 234
6.4. Класс Uri 235
6.5. Уровень розетки 237
6.5.1. Сервер 237
6.5.2. Клиент 241
6.6. Доменная система имен 243
Глава 7. Web API 245
7.1. Пример Web API 245
7.2. JWT-токены 246
7.3. Устройство токенов 253
7.4. Авторизация API 256
7.5. XSS и Web API 257
Глава 8. Трюки 260
8.1. Кеширование 260
8.1.1. Кеширование результата 260
8.1.2. Кеширование статичными переменными 264
8.1.3. Кеширование уровня запроса 265
8.1.4. Кеширование в памяти 266
8.1.5. Сервер кеширования 268
8.1.6. Cookie в качестве кеша 269
8.2. Сессии 271
8.2.1. Пишем свою сессию 271
8.2.2. Безопасность сессии 274
8.2.3. Сессия в качестве кеша 275
8.2.4. Уничтожение сессии 277
8.2.5. Выход 277
8.2.6. Кукушка для сессии 278
8.2.7. Преимущества и недостатки 279
8.3. Защита от множественной обработки 280
Заключение 284
Литература 285
Приложение. Описание файлового архива, сопровождающего книгу 286
Предметный указатель 287