Купить книги Пять элементов благополучия Чек-лист. Как избежать глупых ошибок, ведущих к фатальным последствиям Телефоны Бизбук - c 10 до 18 по будним дням
 
Наши новые проекты:
Вход для зарегистрированных пользователей
Регистрация нового пользователя
Главная Новинки Анонсы Мои заказы Рассылка Оплата и Доставка Контакты
АУДИОКНИГИ ПО БИЗНЕСУ ЭКОНОМИЧЕСКАЯ ЛИТЕРАТУРА КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА ДЕТСКАЯ ЛИТЕРАТУРА
ДОМ, БЫТ, ДОСУГ ЕСТЕСТВЕННЫЕ НАУКИ ИНОСТРАННЫЕ ЯЗЫКИ ИСКУССТВО, ЖИВОПИСЬ
ОБЩЕСТВЕННЫЕ И ГУМАНИТАРНЫЕ НАУКИ ПОДАРОЧНАЯ ЛИТЕРАТУРА ПСИХОЛОГИЯ ТЕХНИЧЕСКАЯ ЛИТЕРАТУРА
ХУДОЖЕСТВЕННАЯ и ПОПУЛЯРНАЯ ЛИТЕРАТУРА ЭЛЕКТРОНИКА РАСПРОДАЖА. СУПЕРСКИДКИ !!!  
Вы находитесь в разделе каталога:
• Безопасное программирование на C и C++, Роберт С. Сикорд

Безопасное программирование на C и C++
Книга Безопасное программирование на C и C++
рекомендуем
Роберт С. Сикорд
Год выпуска: 2015
Изд-во: Диалектика-Вильямс
ISBN: 978-5-8459-1908-3
Переплёт: мягкий
496 страниц
Цена: 545.00 грн.
Есть в наличии
в корзину
Доставка: по Киеву - в течение суток*
                по Украине - от 2 до 10 суток*
Узнайте об основных причинах уязвимостей программного обеспечения в книге "Безопасное программирование на C и C++" и научитесь их избегать!

Распространенные уязвимости программного обеспечения обычно вызываются дефектами программирования, которых можно было бы избежать. Проанализировав десятки тысяч сообщений об уязвимостях, начиная с 1988 года, CERT выявила, что подавляющее количество уязвимостей вызывается относительно небольшим количеством первопричин.

Во втором издании книги "Безопасное программирование на C и C++" выявляются и поясняются эти первопричины и указываются шаги, которые могут быть предприняты для устранения уязвимостей в разрабатываемом программном обеспечении. Кроме того, книга призывает программистов принять на вооружение наилучшие методы обеспечения безопасности и выработать образ мышления, который может помочь защитить программное обеспечение не только от известных на сегодня, но и от будущих атак. Опираясь на доклады и выводы CERT, Роберт С. Сикорд систематически указывает программные ошибки, которые скорее всего приведут к нарушениям безопасности, показывает, как они могут быть использованы злоумышленниками, рассматривает потенциальные следствия такого использования и предоставляет безопасные альтернативы.

В книге "Безопасное программирование на C и C++" подробно рассмотрены следующие темы:

- Повышение безопасности и защищенности любого приложения на C/C++.
- Описание атак с использованием переполнения буфера и разрушения стека, использующих небезопасную логику работы со строками.
- Как избежать уязвимостей и дефектов безопасности при использовании функций управления динамической памятью.
- Как устранить проблемы целочисленной арифметики, вытекающие из переполнения знаковых целых чисел, циклического возврата беззнаковых целых чисел и ошибок усечения.
- Безопасный ввод-вывод и устранение уязвимостей, связанных с файловой системой.
- Корректное применение функций форматированного вывода без внесения уязвимостей форматных строк.
- Устранение конфликтов при доступе к ресурсам и прочих уязвимостей при разработке параллельно выполняемого кода.

Обновления во втором издании:

- Обновленные стандарты C и C++.
- Значительно переработанные главы, посвященные строкам, управлению динамической памятью и целочисленной безопасности.
- Новая глава о параллельных вычислениях.

Во втором издании книги Безопасное программирование на C и C++ приведены сотни примеров безопасного и небезопасного кода и используемых злоумышленниками уязвимостей, реализованных для Windows и Linux.

Если вы отвечаете за разработку безопасного программного обеспечения на C или C++ (или за его безопасность) - никакая иная книга не предложит вам помощи такого уровня и такой подробной информации.

Об авторе книги "Безопасное программирование на C и C++":
Роберт С. Сикорд
в настоящее время является техническим руководителем по безопасному кодированию Программы CERT в Институте программной инженерии (SEI) Карнеги-Меллон. Он выступал в роли автора или соавтора пяти книг, включая The CERT® C Secure Coding Standard (Addison- Wesley, 2009), а также в роли автора и преподавателя видеокурса Professional C Programming LiveLessons, Part I: Writing Robust, Secure, Reliable Code (Addison-Wesley, 2013).





Содержание книги Роберт С. Сикорд "Безопасное программирование на C и C++"




Введение 17
Предисловие 19
Об авторе 25
Глава 1. Бег с ножницами 27
1.1. Измерение угрозы 31
Как подсчитать стоимость 31
Кто несет угрозу 33
Безопасность программного обеспечения 34
1.2. Концепции безопасности 36
Стратегия безопасности 37
Недостатки безопасности 38
Уязвимости 38
Использование уязвимостей 39
Контрмеры 40
1.3. C и C++ 41
Краткая история 42
Проблемы языка программирования C 43
Старый код 46
Другие языки 46
1.4. Платформы разработки 47
Операционные системы 48
Компиляторы 48
1.5. Резюме 48
1.6. Дополнительная литература 49
Глава 2. Строки 51
2.1. Символьные строки 51
Строковый тип данных 52
UTF-8 54
Широкие строки 55
Строковые литералы 55
Строки в C++ 57
Символьные типы 58
Размеры строк 60
2.2. Распространенные ошибки при работе со строками 62
Некорректно ограниченные строки 62
Ошибки сдвига на единицу 66
Ошибки, связанные с нулевым завершающим символом 67
Усечение строк 68
Строковые ошибки без функций 69
2.3. Уязвимости, связанные со строками, и их использование 69
Ненадежные данные 70
Недостаток безопасности: IsPasswordOK 71
Переполнение буфера 72
Организация памяти процесса 73
Управление стеком 74
Разрушение стека 77
Внедрение кода 81
Внедрение дуги 86
Возврат-ориентированное программирование 87
2.4. Стратегии контрмер при работе со строками 88
Обработка строк 89
Интерфейсы C11 проверки выхода за границы 89
Функции динамического выделения памяти 92
C++ std::basic_string 95
Недействительность ссылок на строковые объекты 96
Прочие распространенные ошибки при использовании basic_string 98
2.5. Функции для работы со строками 98
gets() 98
C99 99
Интерфейсы из приложения K стандарта C11: gets_s() 101
Функции динамического распределения памяти 101
strcpy() и strcat() 103
C99 103
strncpy() и strncat() 106
memcpy() и memmove() 111
strlen() 112
2.6. Стратегии защиты времени выполнения 113
Обнаружение и восстановление 113
Проверка входных данных 113
Проверка размера объектов 114
Проверки времени выполнения, генерируемые компилятором Visual Studio 117
Стековые "канарейки" 119
Защита от разрушения стека (ProPolice) 120
Стратегии операционных систем 122
Обнаружение и восстановление 122
Неисполнимые стеки 123
W^X 124
PaX 125
Будущие направления 126
2.7. Широко известные уязвимости 126
Удаленный вход 127
Kerberos 127
2.8. Резюме 128
2.9. Дополнительная литература 129
Глава 3. Уловки с указателями 131
3.1. Местоположение данных 132
3.2. Указатели на функции 133
3.3. Указатели на объекты 134
3.4. Модификация указателя инструкции 135
3.5. Глобальная таблица смещений 137
3.6. Раздел .dtors 138
3.7. Виртуальные указатели 140
3.8. Функции atexit() и on_exit() 141
3.9. Функция longjmp() 142
3.10. Обработка исключений 144
Структурная обработка исключений 144
Системная обработка исключений по умолчанию 146
3.11. Стратегии противодействия 147
Стековые канарейки 147
W^X 147
Кодирование и декодирование указателей на функции 147
3.12. Резюме 149
3.13. Дополнительная литература 149
Глава 4. Управление динамической памятью 151
4.1. Управление памятью в языке программирования C 152
Стандартные функции управления памятью в C 152
Выравнивание 153
alloca() и массивы переменной длины 155
4.2. Распространенные ошибки управления памятью в C 156
Ошибки инициализации 156
Отсутствие проверки возвращаемых значений 158
Разыменование нулевых или неверных указателей 160
Обращение к освобожденной памяти 161
Многократное освобождение памяти 162
Утечки памяти 162
Выделение памяти нулевого размера 163
DR #400 165
4.3. Управление динамической памятью в C++ 166
Функции распределения памяти 167
Функции освобождения памяти 171
Сборка мусора 172
4.4. Распространенные ошибки управления памятью в C++ 174
Некорректная обработка сбоев выделения памяти 174
Использование не соответствующих функций выделения
и освобождения памяти 175
Многократное освобождение памяти 178
Функция освобождения памяти, генерирующая исключение 181
4.5. Диспетчеры памяти 181
4.6. Распределитель памяти Дуга Ли 183
Переполнения буфера в куче 185
4.7. Уязвимость, связанная с двойным освобождением памяти 191
Запись в освобожденную память 195
RtlHeap 195
Возврат к переполнению буфера 201
4.8. Стратегии противодействия 208
Нулевые указатели 208
Последовательные соглашения по управлению памятью 209
phkmalloc 209
Рандомизация 211
OpenBSD 211
Диспетчер памяти jemalloc 212
Статический анализ 212
Инструменты анализа времени выполнения 214
4.9. Знаменитые уязвимости 217
Уязвимость переполнения буфера в CVS 217
Microsoft Data Access Components (MDAC) 217
Повторное освобождение памяти в сервере CVS 218
Уязвимости в MIT Kerberos 5 218
4.10. Резюме 219
Глава 5. Целочисленная безопасность 221
5.1. Введение в целочисленную безопасность 221
5.2. Целочисленные типы данных 222
Беззнаковые целочисленные типы 223
Циклический возврат 224
Знаковые целочисленные типы 227
Диапазоны знаковых целых чисел 230
Целочисленное переполнение 232
Символьные типы 234
Модели данных 234
Другие целочисленные типы 235
5.3. Целочисленные преобразования 239
Преобразование целых чисел 239
Ранг целочисленного преобразования 239
Целочисленное повышение 240
Обычные арифметические преобразования 241
Преобразования из беззнаковых целочисленных типов 242
Преобразования из знаковых целочисленных типов 245
Следствия преобразований 248
5.4. Целочисленные операции 248
Присваивание 249
Сложение 251
Вычитание 257
Умножение 259
Деление и получение остатка 263
Унарный минус 267
Сдвиги 267
5.5. Уязвимости, связанные с целыми числами 270
Уязвимости 270
Циклический возврат 270
Ошибки преобразования и усечения 272
Целочисленные логические ошибки 274
5.6. Стратегии контрмер 274
Выбор целочисленного типа 275
Абстрактные типы данных 277
Арифметика произвольной точности 278
Проверка диапазона 279
Проверка предусловий и постусловий 281
Безопасные библиотеки для работы с целыми числами 283
Обнаружение переполнения 284
Генерируемые компилятором проверки времени выполнения 285
Операции с верифицируемым диапазоном 286
Модель AIR 287
Тестирование и анализ 288
5.7. Резюме 291
Глава 6. Форматированный вывод 293
6.1. Вариативные функции 294
6.2. Функции форматированного вывода 297
Строки формата 298
GCC 301
Visual C++ 301
6.3. Использование уязвимостей функций форматированного вывода 302
Переполнение буфера 302
Выходные потоки 303
Аварийное завершение программы 303
Просмотр содержимого стека 304
Просмотр содержимого памяти 306
Перезапись памяти 307
Интернационализация 312
Уязвимости строк формата из широких символов 312
6.4. Рандомизация стека 312
Преодоление рандомизации стека 313
Запись адресов в двух словах 314
Непосредственный доступ к аргументу 315
6.5. Стратегии противодействия 317
Исключение пользовательского ввода из строк формата 317
Динамическое применение статического содержимого 317
Ограничение количества записанных байтов 318
Интерфейсы с проверкой границ из приложения K стандарта C11 319
iostream и stdio 320
Тестирование 321
Проверки компилятора 321
Статический анализ загрязненности 322
Изменение реализаций вариативных функций 322
Exec Shield 324
FormatGuard 324
Статический бинарный анализ 325
6.6. Известные уязвимости 326
Washington University FTP Daemon 326
CDE ToolTalk 326
Ettercap Version NG-0.7.2 327
6.7. Резюме 327
6.8. Дополнительная литература 328
Глава 7. Параллельное выполнение 329
7.1 Многопоточность 329
7.2. Параллельность 331
Параллелизм данных 332
Параллелизм задач 334
7.3. Производительность 334
Закон Амдаля 335
7.4. Распространенные ошибки 337
Состояния гонки 337
Поврежденные значения 338
Объекты volatile 339
7.5. Стратегии противодействия 341
Модель памяти 342
Примитивы синхронизации 344
Анализ роли потока (исследования) 352
Неизменяемые структуры данных 354
Свойства параллельного кода 355
7.6. Ловушки при контрмерах 356
Клинч 357
Преждевременное освобождение блокировки 361
Конкуренция 363
Проблема ABA 363
7.7. Известные уязвимости 368
DoS-атаки в многоядерных DRAM-системах 368
Уязвимости параллельности в оболочках системных вызовов 369
7.8. Резюме 370
Глава 8. Файловый ввод-вывод 373
8.1. Основы файлового ввода-вывода 373
Файловые системы 374
Специальные файлы 376
8.2. Интерфейсы файлового ввода-вывода 376
Потоки данных 377
Открытие и закрытие файлов 378
POSIX 379
Файловый ввод-вывод в C++ 380
8.3. Управление доступом 381
Права доступа в UNIX 382
Привилегии процесса 384
Изменение привилегий 386
Управление привилегиями 389
Управление правами доступа 395
8.4. Идентификация файла 398
Обход каталогов 398
Ошибки эквивалентности 401
Символические ссылки 402
Канонизация 404
Жесткие ссылки 407
Файлы устройств 409
Атрибуты файла 412
8.5. Состояния гонки 414
Время проверки, время использования 415
Создание без замены 416
Эксклюзивный доступ 419
Совместно используемые каталоги 421
8.6. Стратегии противодействия 424
Закрытие окна гонки 424
Устранение объекта гонки 428
Управляемый доступ к объекту гонки 430
Инструменты обнаружения гонки 432
8.7. Резюме 433
Глава 9. Рекомендованные практики 435
9.1. Жизненный цикл разработки безопасного программного обеспечения 436
TSP-Secure 438
Планирование и отслеживание 439
Управление качеством 440
9.2. Обучение 441
9.3. Требования 443
Стандарты безопасного кодирования 443
Инжиниринг требований безопасности 444
Сценарии использования и злоупотребления 445
9.4. Проектирование 447
Принципы разработки безопасного программного обеспечения 449
Моделирование угроз 452
Анализ атак 453
Уязвимости в имеющемся коде 454
Безопасные оболочки 455
Проверка входных данных 456
Границы доверия 457
Черные списки 460
Белые списки 460
Тестирование 461
9.5. Реализация 461
Обеспечение безопасности компилятором 461
Модель AIR 463
Надежный и безопасный C/C++ 463
Статический анализ 465
Source Code Analysis Laboratory (SCALe) 467
Глубокая защита 468
9.6. Верификация 469
Статический анализ 469
Проникающее тестирование 470
Нечеткое тестирование 470
Аудит кода 472
Руководства и контрольные списки разработчиков 472
Независимый обзор безопасности 473
Обзор области атак 473
9.7. Резюме 474
9.8. Дополнительная литература 474
Список литературы 475
Аббревиатуры 488
Предметный указатель 494

С этой книгой чаще всего покупают:
Стандарты программирования на C++

Стандарты программирования на C++

рекомендуем
Герб Саттер, Андрей Александреску
Год выпуска: 2015
Изд-во: Диалектика-Вильямс
в корзину
 
Руководство для программиста на Java: 75 рекомендаций по написанию надежных и защищенных программ

Руководство для программиста на Java: 75 рекомендаций по написанию надежных и защищенных программ

рекомендуем
Фрэд Лонг, Дхрув Мохиндра, Роберт С. Сикорд, Дин Ф. Сазерленд, Дэвид Свобода
Год выпуска: 2014
Изд-во: Диалектика-Вильямс
в корзину
Цена: 179.00 грн. 
 
Цена: 179.00 грн. 
Прикладная криптография: протоколы, алгоритмы и исходный код на C, 2-е юбилейное издание

Прикладная криптография: протоколы, алгоритмы и исходный код на C, 2-е юбилейное издание

рекомендуем
Брюс Шнайер
Год выпуска: 2016
Изд-во: Диалектика-Вильямс
в корзину
 
Параллельное и распределенное программирование с использованием С++

Параллельное и распределенное программирование с использованием С++

Камерон Хьюз, Трейси Хьюз
Год выпуска: 2004
Изд-во: Диалектика-Вильямс
в корзину
Цена: 794.00 грн. 
 
Цена: 296.00 грн. 
Алгоритмы на C++

Алгоритмы на C++

рекомендуем
Роберт Седжвик
Год выпуска: 2016
Изд-во: Диалектика-Вильямс
в корзину
 
Язык C. Справочник. Полное описание языка

Язык C. Справочник. Полное описание языка

рекомендуем
Питер Принц, Тони Кроуфорд
Год выпуска: 2016
Изд-во: Диалектика-Вильямс
в корзину
Цена: 755.00 грн. 
 
Цена: 670.00 грн. 
Современное проектирование на C++

Современное проектирование на C++

рекомендуем
Александреску Андрей
Год выпуска: 2016
Изд-во: Диалектика-Вильямс
в корзину
 
Эффективный и современный С++: 42 специальные рекомендации по использованию C++11 и C++14

Эффективный и современный С++: 42 специальные рекомендации по использованию C++11 и C++14

рекомендуем
Скотт Мейерс
Год выпуска: 2016
Изд-во: Диалектика-Вильямс
в корзину
Цена: 279.00 грн. 
 
Цена: 409.00 грн. 
Шаблоны C++: справочник разработчика

Шаблоны C++: справочник разработчика

Вандевурд Дэвид
Год выпуска: 2016
Изд-во: Диалектика-Вильямс
в корзину
 
C: полное руководство, классическое издание

C: полное руководство, классическое издание

рекомендуем
Герберт Шилдт
Год выпуска: 2016
Изд-во: Диалектика-Вильямс
в корзину
Цена: 520.00 грн. 
 
Цена: 520.00 грн. 
Оптимизация программ на C++. Проверенные методы для повышения производительности

Оптимизация программ на C++. Проверенные методы для повышения производительности

рекомендуем
Курт Гюнтерот
Год выпуска: 2016
Изд-во: Диалектика-Вильямс

в корзину
 
   
Цена: 520.00 грн. 
   

Хотите оставить отзыв? У Вас возникли вопросы о книге "Безопасное программирование на C и C++, Роберт С. Сикорд" ? Пишите:

* Текст сообщения:
 
  Отправить
Сайт по косметолгии
Поиск по каталогу
 поиск в аннотациях
Искать

* Подробнее об условиях доставки смотрите в разделе "Оплата и Доставка" нашего магазина.
Если у Вас возникли вопросы как подобрать и купить книги в нашем интернет-магазине звоните с 9 до 18 по будним дням: Киев 331-04-53, МТС (050) 809-56-66, Киевстар (067) 408-26-36, Лайф (063) 227-24-47, Интертелеком (094) 831-04-53 или пишите нам