Защищенное программирование
Код курса
КП75
Продолжительность
40 ак. часов (5 дней)
Вендор
Курсы экспертов
Стоимость
70 000 ₽
Форма обучения
Очно
Онлайн-трансляция
Тип программы
Практический курс
Ближайшая дата
24 - 28 марта 2025
Защищенное программирование
Код курса КП75, 5 дней
Статус
Курсы экспертов.
Аннотация
Данный курс предназначен для обучения разработчиков ПО принципам безопасного программирования. Поскольку лучше всего знания усваиваются на практике, в курсе изучаемые принципы, подходы и технологии разбираются на реальных примерах кода. Testing Driven Development (TDD) пришедший из экстремального программирования является одним из таких подходов. Немалое внимание уделяется и инструментальным средствам, разработанным для выявления ошибок и проблем безопасности в коде.
Аудитория
Курс предназначен для руководителей и специалистов:
- отделов разработки и тестирования;
- классификация уязвимостей в СОИ;
- IT-подразделений;
- подразделений по технической защите информации.
Предварительная подготовка
Опыт работы программистом, ведущим проекта, архитектором, специалистом по безопасности, системным администратором или специалистом по информационной безопасности.
Пакет слушателя
Раздаточные материалы в электронном виде, ручка, тетрадь.
Дополнительно
После успешной сдачи зачета выпускники получают свидетельства об обучении Учебного центра "Информзащита".
Выпускники Учебного центра могут получать бесплатные консультации специалистов центра в рамках пройденного курса.
Требования к рабочему месту для дистанционных слушателей
Оборудование: компьютеры слушателей с процессорами не ниже Core i5 (или его аналога на платформе AMD), не менее 16GB RAM и не менее 250GB свободного места на HDD. Доступ в интернет.
Программное обеспечение:
- Windows 7 и выше
- VirtualBox 5.2
- Adobe Reader DC
- Офисный пакет (MsOffice или LibreOffice)
- Mozilla Firefox
Программа курса
Модуль 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. Требования безопасного программирования
- Все данные важны, пока не доказано обратное
- RATIONAL UNIFIED PROCESS (RUP)
- Все данные испорчены, пока не доказано обратное
- Весь код небезопасен, пока не доказано обратное
- Практика: Разбор примеров, иллюстрирующих данные требования
Модуль 8. Введение в функциональное тестирование
- Факторы качества ПО
- Аспекты качества ПО
- Управление качеством продукта
- Отладка и тестирование
- Жизненный цикл тестирования
- Виды тестирования
- Критерии черного ящика
- Критерии белого ящика
- Взаимосвязь требований к ПО
- Документы, создаваемые в процессе тестирования
- План тестирования
- Критерии начала и окончания тестирования
- Тест-дизайн
- Тестовые случаи (Test Cases)
- Жизненный цикл дефекта
- Покрытие входных данных
- Эквивалентное разбиение
- Модуль-драйвер и модуль-заглушка при тестировании программ
- Методы тестирования: блочное, интеграционное и системное
- Покрытие кода тестами
- Тестирование безопасности
- Практика: Подготовка плана тестирования и тестовых случаев
Модуль 9. Автоматизированное функциональное тестирование
- Проблемы автоматизации
- Этапы автоматизированного функционального тестирования
- Этап исследования и разработки пилотных автоматических тестов
- Анализ и планирование
- Подготовка тестовой среды и тестовых данных
- Разработка тестовых скриптов, осуществляющих покрытие функционала приложения, на основе готовой архитектуры
- Запуск автоматических скриптов
- Представление результатов тестирования
- Стратегия тестирования
- Сценарий тестирования
- Практика: Создание автоматизированного сценария
Модуль 10. Автоматизация развертывания и обновления конфигураций
- Как работает Ansible
- Практика: Установка Ansible
- Практика: Проверка работоспособности
- Практика: Управление конфигурациями