스택 설정
선호하는 프로그래밍 언어와 프레임워크를 설정하여 교육 경험을 맞춤화합니다. 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) |
선호도 작동 방식
SecureCodingHub의 각 주제에는 선호도 카테고리 중 하나에 매핑되는 stackType이 있습니다. 챌린지를 열면 플랫폼이 자동으로 선호도에 일치하는 언어를 선택합니다.
| 스택 유형 | 매핑된 선호도 | 주제 예시 |
|---|---|---|
| 백엔드 | 백엔드 언어 선호도 | SQL Injection, SSRF, 명령 주입 |
| 프론트엔드 | 프론트엔드 프레임워크 선호도 | XSS, DOM Clobbering, Prototype Pollution |
| 모바일 | 모바일 플랫폼 선호도 | Insecure Storage, WebView Injection, Certificate Pinning |
챌린지를 열면 기본적으로 올바른 언어가 표시됩니다. 모든 챌린지 내의 언어 선택기를 사용하여 항상 다른 언어로 전환할 수 있습니다.
단계 건너뛰기
모든 마법사 단계에는 주요 작업 옆에 건너뛰기 버튼이 있습니다. 건너뛴다고 해서 마법사를 포기하는 것은 아닙니다 — 해당 단계에 대한 합리적인 기본값을 적용하고 계속 진행할 수 있게 합니다. 기본값은 다음과 같습니다:
- 백엔드:
JavaScript - 프론트엔드:
React (TypeScript) - 모바일:
Kotlin (Android)
건너뛰기는 단계가 오늘 적용되지 않을 때 올바른 선택입니다 — 예를 들어, 프론트엔드 엔지니어가 기본값을 사용하기 위해 백엔드 단계를 건너뛰는 것입니다. 나중에 돌아와서 동일한 마법사를 통해 기본값을 재정의할 수 있습니다.
선호도 변경
상단 바의 스택 표시기 칩(선택한 스택 아이콘 표시)을 클릭하면 마법사가 다시 열립니다 — 이는 선호도를 업데이트하는 일상적인 방법입니다. 변경 사항은 모든 챌린지와 주제에 즉시 적용됩니다. 선호도는 또한 프로필의 스택 설정 아래에 있으며, 이는 선택기를 다시 시작하지 않고 무엇이 설정되어 있는지 검사하려는 경우에 유용합니다.
선호 언어로 주제가 존재하지 않을 때
모든 챌린지가 모든 언어로 제공되는 것은 아닙니다. 작성자가 선호 언어에 대한 스니펫을 아직 제공하지 않은 주제를 열면, 플랫폼은 결정적인 체인을 통해 폴백합니다: 해당 주제 영역에 대한 스택 설정, 그 다음 주제 자체의 작성자 정의 기본값, 그 다음 JavaScript, 그 다음 첫 번째 사용 가능한 언어입니다. 챌린지 헤더에서 언어 레이블이 변경되는 것을 볼 수 있으므로 폴백은 결코 조용하지 않습니다 — 하지만 "주제를 사용할 수 없음" 화면을 보지 않습니다.
관리자용
선호도는 사용자별로 저장됩니다. 관리자는 학습자에 대한 선호도를 설정할 수 없습니다 — 각 개발자가 자신의 스택을 선택합니다. 이는 모든 팀원이 실제로 일상적으로 작업하는 언어로 교육을 받도록 보장합니다.
스택이 중요한 이유
PHP 챌린지를 읽는 TypeScript 개발자는 취약점을 찾는 대신 익숙하지 않은 구문을 분석하는 데 대부분의 주의를 기울입니다. 인지 부하는 실제적이고 시간 비용도 실제적입니다. 스택 설정은 개념을 가르치는 데 사용되는 언어가 개념을 학습하는 데 장벽이 되지 않도록 존재합니다. 구문이 유창할 때 시선은 신뢰 경계와 안전하지 않은 프리미티브로 곧바로 향합니다. 그것이 만들고자 하는 근육 기억입니다. 절반만 읽을 수 있는 언어의 챌린지는 잘못된 방향으로 훈련시킵니다: 자신의 코드의 자신 있는 리뷰어가 아니라 익숙하지 않은 코드의 평균적으로 좋은 디버거가 됩니다.
이것이 또한 선호도가 조직별이 아닌 사용자별인 이유입니다. 팀 관리자는 Python 엔지니어에게 Java 챌린지를 강제할 수 없습니다. 각 개발자는 검토하고, 배포하고, 온콜할 스택에서 훈련해야 합니다. 선택된 언어가 모든 챌린지에 표시되는 기본 스니펫을 어떻게 결정하는지는 연습 모드를 참조하세요.
스택 설정을 확장해야 할 때
스택 설정은 영구적이지 않습니다. 진정으로 백엔드와 프론트엔드 사이를 이동하는 풀스택 엔지니어는 주요 백엔드와 프론트엔드를 선택한 다음 챌린지 내 언어 선택기를 사용하여 필요에 따라 전환해야 합니다. 다가오는 프로젝트를 위해 새 언어를 학습하는 엔지니어는 확장의 또 다른 일반적인 경우입니다: 첫 번째 풀 리퀘스트가 도착하기 전에 검토 유창성을 구축하기 위해 새 스택에서 몇 주 동안 훈련하세요. 설정에서 언제든지 다시 전환할 수 있습니다.
주의해야 할 특정 사례는 여러 스택에 걸쳐 풀 리퀘스트를 검토하는 시니어 또는 스태프 엔지니어입니다. 단일 백엔드 언어를 선택하면 API 및 인프라 인접 취약점에서 나타나는 언어 간 패턴이 숨겨집니다. 분기마다 선호도를 회전하는 것은 해당 역할에 합리적인 습관입니다.
스택이 팀 과제와 어떻게 상호작용하는지
조직 관리자가 빠른 시작에서 과제를 생성할 때 카테고리, 주제 또는 시나리오를 선택합니다. 언어를 선택하지 않습니다. 할당된 각 학습자는 자신의 스택 설정에 일치하는 언어로 할당된 콘텐츠를 봅니다. 단일 "OWASP Web Top 10" 과제는 백엔드 팀에게는 Python 챌린지, 프론트엔드 팀에게는 React 챌린지, iOS 팀에게는 Swift 챌린지로 표시될 수 있습니다. 이는 의도된 설계입니다: 하나의 과제, 여러 스택, 일관된 커버리지입니다. 관리자는 언어별 중복 과제를 생성하여 이를 우회하려고 해서는 안 됩니다.