Документация/Для учащихся/Настройки стека

Настройки стека

Установите Ваши предпочитаемые языки программирования и фреймворки для настройки опыта обучения. SecureCodingHub автоматически показывает задания в Вашем предпочитаемом стеке.

Установка Ваших настроек

Когда Вы впервые посещаете платформу, 3-шаговый мастер проводит Вас через выбор Ваших предпочитаемых языков и фреймворков:

ШагВыборВарианты
Шаг 1Бэкенд-языкJavaScript, TypeScript, Python, Java, C#, PHP, Go
Шаг 2Фронтенд-фреймворкReact (TS/JS), Vue (TS/JS), Angular (TS/JS)
Шаг 3Мобильная платформаSwift (iOS), Kotlin (Android)
app.securecodinghub.com/preferences
Шаг 1 / 3 · Бэкенд
Выберите Ваш бэкенд-язык

Мы будем показывать Вам задания SQL injection, SSRF и command injection на этом языке по умолчанию.

JS
JavaScript
Node.js · Express
TS
TypeScript
Node.js · NestJS
PY
Python
Django · FastAPI
JV
Java
Spring Boot
C#
C#
.NET 8
PHP
PHP
Laravel · Symfony
GO
Go
Gin · Fiber

Как работают настройки

У каждой темы в SecureCodingHub есть stackType, которая сопоставляется с одной из Ваших категорий настроек. Когда Вы открываете задание, платформа автоматически выбирает язык, соответствующий Вашим настройкам.

Тип стекаСопоставленная настройкаПримеры тем
БэкендВаша настройка бэкенд-языкаSQL Injection, SSRF, Command Injection
ФронтендВаша настройка фронтенд-фреймворкаXSS, DOM Clobbering, Prototype Pollution
МобильныйВаша настройка мобильной платформыInsecure Storage, WebView Injection, Certificate Pinning

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

Пропуск шага

У каждого шага мастера есть кнопка Пропустить рядом с основным действием. Пропуск не оставляет мастера — он применяет разумное значение по умолчанию для этого шага и позволяет Вам продолжить. Значения по умолчанию:

  • Бэкенд: JavaScript
  • Фронтенд: React (TypeScript)
  • Мобильный: Kotlin (Android)

Пропуск — правильный выбор, когда шаг сегодня к Вам не относится — например, фронтенд-инженер, пропускающий бэкенд-шаг, чтобы взять значение по умолчанию. Вы можете вернуться позже и переопределить значение по умолчанию через тот же мастер.

Изменение настроек

Чип-индикатор стека на верхней панели (показывающий иконки выбранного Вами стека) повторно открывает мастер по клику — это повседневный способ обновлять настройки. Изменения вступают в силу немедленно во всех заданиях и темах. Настройки также живут в Вашем профиле в разделе Настройки стека, что полезно, когда Вы хотите проверить, что установлено, не запуская повторно пикер.

Когда темы нет на Вашем языке

Не каждое задание выпускается на каждом языке. Когда Вы открываете тему, для которой автор ещё не предоставил фрагмент на Вашем предпочитаемом языке, платформа использует резервную детерминированную цепочку: Ваша настройка стека для области этой темы, затем собственное значение по умолчанию автора темы, затем JavaScript, затем первый доступный язык. Вы увидите изменение метки языка в заголовке задания, поэтому резерв никогда не молчалив — но Вы не увидите экран «тема недоступна».

Для администраторов

Настройки хранятся для каждого пользователя. Администраторы не могут устанавливать настройки для учащихся — каждый разработчик выбирает свой собственный стек. Это гарантирует, что каждый член команды тренируется на языке, с которым он фактически работает день за днём.

Синхронизация между устройствами: Настройки синхронизируются между устройствами. Если Вы войдёте из другого браузера, Ваши настройки загрузятся автоматически.

Почему стек важен

TypeScript-разработчик, читающий PHP-задание, тратит большую часть внимания на разбор незнакомого синтаксиса вместо поиска уязвимости. Когнитивная нагрузка реальна, и временная цена реальна. Настройки стека существуют, чтобы язык, используемый для преподавания концепции, не становился барьером для изучения концепции. Когда синтаксис свободный, Ваш глаз сразу идёт к границе доверия и небезопасному примитиву. Это мышечная память, которую Вы хотите построить. Задание на языке, который Вы только наполовину читаете, тренирует Вас в неправильном направлении: Вы становитесь средне-хорошим отладчиком незнакомого кода, а не уверенным рецензентом собственного.

Именно поэтому настройки на уровне пользователя, а не организации. Администратор команды не может заставить Python-инженера делать Java-задания. Каждый разработчик должен тренироваться в стеке, который он будет рецензировать, выпускать и поддерживать. См. Режим практики, как выбранный язык управляет фрагментом по умолчанию в любом задании.

Когда расширять настройки стека

Настройки стека не постоянны. Full-stack инженерам, которые действительно переключаются между бэкендом и фронтендом, следует выбирать основной бэкенд и фронтенд, а затем использовать селектор языка внутри задания для переключения по требованию. Инженеры, изучающие новый язык для предстоящего проекта, — другой распространённый случай для расширения: проведите несколько недель в тренировке на новом стеке, чтобы построить беглость ревью до того, как приземлится первый pull request. Вы можете переключиться обратно в любое время из настроек.

Конкретный случай, заслуживающий упоминания, — это senior- или staff-инженер, который рецензирует pull request'ы через несколько стеков. Выбор одного бэкенд-языка скрывает кросс-языковые шаблоны, появляющиеся в уязвимостях API и инфраструктуры. Ротация настроек ежеквартально — разумная привычка для этой роли.

Как стек взаимодействует с заданиями команды

Когда администратор организации создаёт задание в Быстрый старт, он выбирает категорию, тему или сценарий. Он не выбирает язык. Каждый назначенный учащийся видит назначенный контент на языке, соответствующем его собственным настройкам стека. Одно задание «OWASP Web Top 10» может приземлиться как задания Python для бэкенд-команды, задания React для фронтенд-команды и задания Swift для iOS-команды. Это и есть задуманный дизайн: одно задание, много стеков, согласованное покрытие. Администраторам не следует пытаться обходить это, создавая дублирующие задания для каждого языка.