
Secure Coding Dojo — это платформа для передачи знаний о безопасном написании кода.
Secure Coding Dojo — это платформа для проведения обучения безопасному программированию. Хотя она поставляется с собственным уязвимым обучающим приложением (сайт Insecure.Inc), учебный портал можно использовать вместе с другими обучающими приложениями. Сильной стороной платформы являются её расширяемость и интеграция с часто используемой платформой для совместной разработки Slack. Учебный портал можно легко развернуть в облаке; ниже приведены инструкции по настройке AWS Elastic Beanstalk.
Обязательно также загляните в wiki для получения дополнительных сведений о развёртывании и установке Dojo.
Скачайте демо, чтобы ознакомиться с учебным порталом и приложением Insecure.Inc.
Также посмотрите в /screenshots

Следующие шаги позволят получить базовую конфигурацию Dojo. Для расширенной конфигурации и интеграций обратитесь к wiki
Установите последнюю версию Docker.
Склонируйте репозиторий с помощью Git
Перейдите в корневой каталог репозитория
Настройте переменную окружения DATA_DIR как точку монтирования для файлов dojo. В *nix/mac измените .bash_profile следующим образом
export DATA_DIR="/YOUR_DATA_DIR"
На Mac необходимо разрешить Docker доступ к этому каталогу в Docker > Preferences > File Sharing
Перезапустите терминал
Запустите с помощью
docker-compose up
Хотя открытые обучающие сайты для преподавания концепций безопасности приложений не новы, целевой аудиторией этих сайтов были пентестеры и этичные хакеры. Secure Coding Dojo в первую очередь предназначен как платформа доставки обучения для разработчиков, и вот почему:
Хотя мы не гарантируем соответствие, обучение может использоваться для удовлетворения требований соответствия, таких как PCI 6.5.a. См. документ учебной программы Insecure.Inc о соответствии SANS 25 / OWASP Top 10 / PCI 6.5
Учебный портал
Insecure.Inc
Учебный портал
Insecure.Inc
Учебный портал
Insecure.Inc
Загляните в wiki.
Дополнительная информация на wiki.
Вам потребуется создать приложение Slack для аутентификации.
Аутентификацию Google также можно настроить в config.json. Вам потребуется учётная запись разработчика Google и необходимо получить учётные данные OAuth в консоли Google API: https://console.developers.google.com
В этом же месте вы настроите свой домен и авторизованные URI перенаправления. Например, для настройки localhost URL перенаправления будет: http://localhost:8081/public/google/callback
Для небольших команд или предварительно настроенных образов аутентификация Slack или Google может быть недоступна. В этом случае вы можете настроить аутентификацию с использованием локального файла.
Дополнительную информацию смотрите в wiki.
Если вы не настроите БД, учебный портал просто будет использовать локальную БД SQLite.
Вы также можете установить MySQL и создать БД и учётные данные для этой БД. Запомните имя пользователя и пароль — они понадобятся позже.
Вам нужно настроить ключи шифрования как переменные окружения ОС. В *nix/mac измените .bash_profile следующим образом
export ENC_KEY="put something random here"
export ENC_KEY_IV="put something random here"
Следующее предназначено для предотвращения генерации участниками собственных кодов заданий.
export CHALLENGE_MASTER_SALT="put something random here"
Вы можете добавлять новые уроки, следуя модели существующих.
Задания определены в ./trainingportal/static/lessons Файл definitions.json указывает на соответствующее HTML-описание задания, ссылку для запуска и соответствующие блоки кода по идентификатору блока кода. Следуйте уже определённым примерам, чтобы создать новое.
.
+-- /trainingportal/static/lessons
| +-- modules.json //configuration file where lesson modules are defined
| +-- /attack-grams //visual representations of attacks included in challenge descriptions
| +-- /blackBelt //lesson module
| +--definitions.json //individual lesson definitions
| +--cwe494.md // html or markdown file including the lesson description
| +--cwe494.sol.md //solution for the lesson
| ....
| +--quiz.html
| +-- /secondDegreeBlackBelt
Блоки кода определены в ./trainingportal/static/codeBlocks. Эта папка имеет аналогичную структуру с json определения и набором HTML-файлов для каждого задания.
.
+-- /trainingportal/static/codeBlocks
| +-- codeBlocksDefinitions.json //configuration file where code blocks are defined
| +-- authenticationByDefault.html //code block description html
| ...
| +-- useStrongDataEncryption.html