Документация/Начало работы/Обзор платформы

Обзор платформы

SecureCodingHub — это интерактивная платформа обучения безопасному программированию, которая учит разработчиков выявлять и устранять уязвимости через практику. Каталог охватывает более 200 тем по четырём семействам OWASP top 10 (Web, API, Mobile, Client-Side), а интерфейс учащегося доступен на восьми языках.

Что такое SecureCodingHub?

SecureCodingHub предоставляет два режима обучения, созданных для развития реальных навыков безопасного программирования:

Режим практики

Задания по ревью кода, где разработчики находят уязвимые блоки кода и выбирают правильное исправление. Доступно для семи бэкенд-языков, шести фронтенд-стеков (React, Vue, Angular — каждый в TypeScript и JavaScript) и двух мобильных платформ.

Режим обучения

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

Поддерживаемые категории OWASP

Учебный контент организован по четырём основным стандартам безопасности OWASP:

КатегорияТемыОписание
Web Top 1010 модулей, ~88 темSQL Injection, XSS, CSRF, Broken Access Control и другие
API Top 1010 модулей, ~45 темBOLA, Broken Authentication, Mass Assignment, SSRF и другие
Mobile Top 1010 модулей, ~47 темInsecure Storage, WebView Injection, Certificate Pinning и другие
Client-Side Top 1010 модулей, ~46 темDOM XSS, Prototype Pollution, Local Storage Secrets и другие

Поддерживаемые языки и фреймворки

Бэкенд-языки

JavaScript
TypeScript
Python
Java
C#
PHP
Go

Фронтенд-фреймворки

React (TS)
React (JS)
Vue (TS)
Vue (JS)
Angular (TS)
Angular (JS)

Мобильные платформы

Swift (iOS)
Kotlin (Android)

Роли пользователей

Внутри каждой организации пользователи имеют одну из двух ролей:

РольДоступ
Администратор организацииУправляет пользователями, командами, заданиями, пользовательскими курсами, SSO, SCIM, SCORM, API-ключами, webhook'ами, журналом аудита, панелями соответствия и настройками организации.
УчащийсяВыполняет задания по практике и сценарии обучения, отслеживает личный прогресс и зарабатывает XP.

Подробная разбивка в разделе Роли и разрешения.

Языки интерфейса

Интерфейс учащегося и администратора переведён на восемь языков. Пользователи выбирают язык интерфейса в верхней панели; выбор сохраняется между сессиями.

English (en)
Türkçe (tr)
Español (es)
Français (fr)
Deutsch (de)
Русский (ru)
日本語 (ja)
한국어 (ko)

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

Панель управления — общий вид

Вот панель администратора, на которую Вы попадаете при первом входе:

app.securecodinghub.com/organization
Панель управления
Общая картина обучения по организации
Процент завершения
76%
Активные пользователи
89 / 124
Средний балл
132 / 160
Среднее число заданий на пользователя
14.9
Таблица лидеров
Топ 5 по XP
#1Sarah Chen87 зад12 сцн4,280 XP
#2James Park87 зад12 сцн3,910 XP
#3Emma Wilson87 зад12 сцн3,650 XP
#4Alex Kumar87 зад12 сцн3,420 XP
#5Maria Santos87 зад12 сцн3,100 XP
Следующие шаги:Перейдите к Руководству по быстрому старту, чтобы настроить Вашу организацию и добавить первых пользователей.

Как два режима дополняют друг друга

Практика и Обучение — это не одно и то же упражнение в двух форматах. Режим практики нацелен на распознавание шаблонов на уровне кода: даны несколько строк кода — сможете ли Вы заметить небезопасный примитив и выбрать безопасную замену. Это быстро, повторяемо и лучше всего подходит для выработки мышечной памяти по широкому спектру типов уязвимостей. Разработчик, увидевший сорок вариантов SQL injection на Python и TypeScript, заметит следующий вариант в реальном pull request, не задумываясь. См. Режим практики для двухфазного процесса.

Режим обучения покрывает то, что Практика не может. Задание по ревью кода показывает Вам фрагмент, но реальные уязвимости живут в зазоре между двумя файлами, двумя сервисами или двумя слоями доверия. Сценарии обучения ставят Вас перед симулированным приложением и проводят по пути атакующего: разведка, эксплуатация, последствия, предотвращение. Этот контекст превращает чек-листное смягчение угрозы в дизайн-инстинкт. Используйте Практику для широты, Обучение для глубины. Новые сотрудники обычно начинают с одного сценария Обучения на категорию, прежде чем приступить к Практике в этой категории. См. Режим обучения для структуры сценариев.

Почему платформа структурирована вокруг классов уязвимостей

Каталог организован по категориям OWASP и типам уязвимостей, а не по языкам программирования. Это сделано намеренно. Уязвимости — это языконезависимые концепции: SQL injection — это вопрос того, как пользовательский ввод попадает в план запроса, независимо от того, написан запрос на Python, Java или Go. Платформа, организованная по языкам, изолирует знания. Python-разработчик, изучающий XSS на своём языке, никогда не увидит, что тот же примитив появляется в Vue, Angular и React с разными правилами экранирования. Организация по классам устраняет этот разрыв.

Система настроек стека обрабатывает специфические для языка детали ниже. Вы выбираете свой стек один раз через Настройкам стека, и каждое задание по умолчанию использует синтаксис, который Вы читаете свободно. Под капотом тот же класс уязвимостей преподаётся с тем же концептуальным каркасом во всех поддерживаемых стеках. Когда Вы позже перейдёте в другую команду или выучите новый язык, концепции перенесутся мгновенно, потому что они никогда не были привязаны к одному синтаксису.