Фоновый баннер

Безопасное программирование: C/C++

Secure coding: C/C++

Подробнее о курсе

Краткое описание курса
Курс охватывает основные принципы безопасности в C/C++ и уязвимости программного обеспечения, вызванные небезопасным кодированием.

На курсе рассматриваются подходы и технологии, направленные на снижение числа ошибок в коде, особенно таких, которые можно использовать как бреши в его безопасности. Рассматриваются успешные действия agile-команд и лучшие практики от лидеров рынка (Microsoft, Google)

Цель курса заключается в том, чтобы познакомить слушателей с понятиями и терминологией в области безопасности, а также предоставить им прочную базу знаний для разработки программного обеспечения с использованием C/C++

Курс охватывает основные принципы безопасности в C/C++ и уязвимости программного обеспечения, вызванные небезопасным кодированием

На нем рассматривается, как выявлять недостатки безопасности и реализовывать контрмеры безопасности в различных областях жизненного цикла разработки программного обеспечения, а также применять эти навыки для улучшения общего качества продуктов и приложений

В каждом модуле программы предусмотрены лабораторные работы, направленные на закрепление теоретических знаний

Целевая аудитория курса
Курс предназначен для разработчиков C/C++, дизайнеров и архитекторов ПО (имеющих опыт разработки на С/С++ не менее одного года)

Получаемые знания и навыки
По окончании курса слушатели овладеют навыками безопасного программирования и основами анализа и проектирования безопасности. Слушатели научатся разрабатывать, проектировать и поддерживать приложения, используя методы обеспечения безопасности в разрабатываемом коде.

Необходимая предварительная подготовка
Для эффективного обучения на курсе, слушатели должны обладать следующими знаниями и навыками
  • Навыки программирования на C/C++ от года
  • Навыки работы без фреймворков (на чистом C/C++)
  • Понимание концепций функционирования операционных систем

Краткое содержание курса
Модуль 1 — Defensive Programming

  • Сокращение числа ошибок в ПО
  • Создание отчуждаемого исходного кода
    Практика: Разбор примеров оформления исходного кода и влияния стандартов кодирования на читаемость программ, лёгкость их поддержки и развития
  • ПО должно вести себя предсказуемо, несмотря на неожиданные вводные данные или действия пользователя
    Практика: Разбор примеров непредсказуемого поведения ПО и способов исправления ситуации

Модуль 2 — Типичные ошибки в ПО

  • Переполнение буфера
  • Уязвимости форматной строки
  • Некорректная аутентификация
  • Проблемы с авторизацией
  • Авторизация проведена некорректно
  • Слишком много доверия к пользовательскому вводу
  • Ошибки канонизации
    Практика: Разбор примеров кода, содержащего типовые ошибки, и способов их исправления

Модуль 3 — Проблемы криптографии

  • Слабые криптоалгоритмы: DES, Triple DES, RC4 и MPPE
  • Слабые hash-функции: LM-hash, MD2, MD4 и MD5
  • Хранение ключевой информации в контейнере
  • Хранение ключевой информации в памяти
    Коллоквиум: Обсуждение проблем безопасности, связанных с криптографией, и их решение

Модуль 4 — Проектирование по контракту

  • Возможные типы входных данных и их значение
  • Типы возвращаемых данных и их значение
  • Условия возникновения исключений, их типы и значения
  • Присутствие побочного эффекта метода
  • Предусловия, которые могут быть ослаблены (но не усилены) в подклассах
  • Постусловия, которые могут быть усилены (но не ослаблены) в подклассах
  • Инварианты, которые могут быть усилены (но не ослаблены) в подклассах
  • Гарантии производительности, например, временная сложность или сложность по памяти
    Практика: Разбор примеров, использующих данный подход

Модуль 5 — DevOps

  • Проектирование
  • Система работы с требованиями
  • CASE-средства
  • Разработка
  • Система контроля версий
  • Среда разработки
  • Тестирование
  • Баг-трекер
  • Система автоматизации функционального тестирования
  • Эксплуатация
  • Ansible
    Коллоквиум: Построение интегрированной инфраструктуры проекта и сокращение сроков выхода релиза

Модуль 6 — Методологии создания ПО

  • Waterfall
  • RATIONAL UNIFIED PROCESS (RUP)
  • Microsoft Solution Framework (MSF)
  • Гибкие методологии (Agile)
  • Экстремальное программирование (XP)
  • Scrum
  • Kanban
    Коллоквиум: Обсуждение сильных и слабых сторон каждой из методологий с позиций исключения уязвимостей и устойчивости ко взлому

Модуль 7 — Требования безопасного программирования

  • Все данные важны, пока не доказано обратное
  • Все данные испорчены, пока не доказано обратное
  • Весь код небезопасен, пока не доказано обратное
    Практика: Разбор примеров, иллюстрирующих данные требования

Модуль 8 — Введение в функциональное тестирование

  • Факторы качества ПО
  • Аспекты качества ПО
  • Управление качеством продукта
  • Отладка и тестирование
  • Жизненный цикл тестирования
  • Виды тестирования
  • Критерии черного ящика
  • Критерии белого ящика
  • Взаимосвязь требований к ПО
  • Документы, создаваемые в процессе тестирования
  • План тестирования
  • Критерии начала и окончания тестирования
  • Тест-дизайн
  • Тестовые случаи (Test Cases)
  • Жизненный цикл дефекта
  • Покрытие входных данных
  • Эквивалентное разбиение
  • Модуль-драйвер и модуль-заглушка при тестировании программ
  • Методы тестирования: блочное, интеграционное и системное
  • Покрытие кода тестами
  • Тестирование безопасности
    Практика: Подготовка плана тестирования и тестовых случаев

Модуль 9 — Автоматизированное функциональное тестирование

  • Проблемы автоматизации
  • Этапы автоматизированного функционального тестирования
  • Этап исследования и разработки пилотных автоматических тестов
  • Анализ и планирование
  • Подготовка тестовой среды и тестовых данных
  • Разработка тестовых скриптов, осуществляющих покрытие функционала приложения, на основе готовой архитектуры
  • Запуск автоматических скриптов
  • Представление результатов тестирования
  • Стратегия тестирования
  • Сценарий тестирования
    Практика: Создание автоматизированного сценария

Модуль 10 — Автоматизация развертывания и обновления конфигураций

  • Как работает Ansible
    Практика: Установка Ansible
    Практика: Проверка работоспособности
    Практика: Управление конфигурациями

Вам также будет интересно…

№ Курса Название Цена Продолжительность Расписание
CS-TIA Технологии интеграции
35000 руб. 3 дней

Отзывы по курсу