플랫폼 개요
SecureCodingHub는 개발자가 실습을 통해 보안 취약점을 식별하고 수정할 수 있도록 가르치는 인터랙티브 안전 코딩 교육 플랫폼입니다. 카탈로그는 현재 제공되는 4개의 OWASP Top 10 패밀리(Web, API, Mobile, Client-Side)에 걸쳐 200개 이상의 주제를 다루며, 학습자 경험은 8개의 UI 언어로 제공됩니다.
SecureCodingHub란?
SecureCodingHub는 실전 안전 코딩 기술을 구축하도록 설계된 두 가지 교육 모드를 제공합니다:
연습 모드
개발자가 취약한 코드 블록을 찾고 올바른 수정안을 선택하는 코드 리뷰 챌린지입니다. 7개의 백엔드 언어, 6개의 프론트엔드 스택(React, Vue, Angular — 각각 TypeScript 및 JavaScript), 그리고 2개의 모바일 플랫폼에서 사용할 수 있습니다.
학습 모드
시뮬레이션된 브라우저 환경을 통한 인터랙티브 단계별 공격 시나리오입니다. 개발자가 실제 공격 체인을 단계별로 진행하면서 취약점이 어떻게 익스플로잇되는지 이해합니다.
지원되는 OWASP 카테고리
교육 콘텐츠는 4개의 주요 OWASP 보안 표준에 걸쳐 구성되어 있습니다:
| 카테고리 | 주제 | 설명 |
|---|---|---|
| Web Top 10 | 10개 모듈, 약 88개 주제 | SQL Injection, XSS, CSRF, Broken Access Control 등 |
| API Top 10 | 10개 모듈, 약 45개 주제 | BOLA, Broken Authentication, Mass Assignment, SSRF 등 |
| Mobile Top 10 | 10개 모듈, 약 47개 주제 | Insecure Storage, WebView Injection, Certificate Pinning 등 |
| Client-Side Top 10 | 10개 모듈, 약 46개 주제 | DOM XSS, Prototype Pollution, Local Storage Secrets 등 |
지원 언어 및 프레임워크
백엔드 언어
프론트엔드 프레임워크
모바일 플랫폼
사용자 역할
각 조직 내에서 사용자는 두 가지 역할 중 하나입니다:
| 역할 | 권한 |
|---|---|
| 조직 관리자 | 사용자, 팀, 과제, 맞춤형 과정, SSO, SCIM, SCORM, API 키, 웹훅, 감사 로그, 컴플라이언스 대시보드 및 조직 설정을 관리합니다. |
| 학습자 | 연습 챌린지와 학습 시나리오를 완료하고, 개인 진행 상황을 추적하며, XP를 획득합니다. |
역할 및 권한에서 전체 내역을 확인하세요.
UI 언어
학습자 및 관리자 인터페이스는 8개 언어로 번역되어 있습니다. 사용자는 상단 바에서 UI 언어를 선택합니다. 선택은 세션 간 유지됩니다.
교육 콘텐츠 번역은 별도로 진행되고 있습니다 — 챌린지 시나리오와 본문은 현지화 작업이 진행됨에 따라 동일한 언어 세트로 번역됩니다.
한눈에 보는 대시보드
다음은 처음 로그인 시 표시되는 관리자 대시보드입니다:
두 모드가 서로를 보완하는 방식
연습과 학습은 두 가지 형식의 동일한 연습이 아닙니다. 연습 모드는 코드 수준의 패턴 인식을 목표로 합니다: 몇 줄의 코드를 보고 안전하지 않은 프리미티브를 찾아 안전한 대체 항목을 선택할 수 있는가입니다. 빠르고 반복 가능하며, 광범위한 취약점 유형에 걸쳐 근육 기억을 구축하는 데 가장 적합합니다. Python과 TypeScript에서 40개의 SQL injection 변형을 본 개발자는 실제 풀 리퀘스트에서 다음 것을 생각 없이 잡아낼 것입니다. 2단계 흐름은 연습 모드를 참조하세요.
학습 모드는 연습이 다루지 못하는 부분을 담당합니다. 코드 리뷰 챌린지는 스니펫을 보여주지만, 실제 취약점은 두 파일, 두 서비스 또는 두 신뢰 계층 사이의 간격에 존재합니다. 학습 시나리오는 시뮬레이션된 애플리케이션 앞에 여러분을 두고 공격자의 경로(탐색, 익스플로잇, 영향, 예방)를 따라가게 합니다. 그 맥락이 체크리스트 완화 조치를 설계 직관으로 바꾸는 것입니다. 폭은 연습으로, 깊이는 학습으로 사용하세요. 신입 사원은 일반적으로 해당 카테고리에서 연습을 반복하기 전에 각 카테고리당 하나의 학습 시나리오로 시작합니다. 시나리오 구조는 학습 모드를 참조하세요.
플랫폼이 취약점 클래스를 중심으로 구성된 이유
카탈로그는 프로그래밍 언어가 아니라 OWASP 카테고리와 취약점 유형별로 구성됩니다. 이는 의도적인 것입니다. 취약점은 언어에 구애받지 않는 개념입니다: SQL injection은 사용자 입력이 쿼리 플랜에 도달하는 방식의 문제이며, 쿼리가 Python, Java 또는 Go에 있든 마찬가지입니다. 언어별로 구성된 플랫폼은 결국 지식을 사일로화하게 됩니다. 자신의 언어로 XSS를 배우는 Python 개발자는 동일한 프리미티브가 Vue, Angular 및 React에서 서로 다른 이스케이프 규칙으로 나타난다는 것을 결코 알지 못합니다. 클래스별로 구성하면 이러한 간격을 피할 수 있습니다.
스택 설정 시스템은 그 아래의 언어별 영역을 처리합니다. 스택 설정을 통해 스택을 한 번 선택하면, 모든 챌린지는 익숙하게 읽을 수 있는 구문으로 기본 설정됩니다. 그 아래에서는 동일한 취약점 클래스가 지원되는 모든 스택에 걸쳐 동일한 개념적 프레임으로 가르쳐집니다. 나중에 팀을 옮기거나 새로운 언어를 배울 때, 개념이 처음부터 하나의 구문에 묶여 있지 않았기 때문에 즉시 전이됩니다.