“안전하다”에서 “검증했다”로: OWASP ASVS 학습 사이트를 만들었습니다

로그인도 잘 되고, 화면도 잘 뜨고, API도 정상적으로 응답합니다. 그렇다면 이 애플리케이션은 안전하다고 말할 수 있을까요?
보안은 막연한 인상만으로 판단하기 어렵습니다. 어떤 요구사항을 확인했고, 어떤 테스트를 했으며, 그 결과를 무엇으로 설명할 수 있는지 기준이 필요합니다. 그래서 OWASP ASVS를 조금씩 살펴보고, 학습 사이트로 정리해봤습니다.
ASVS는 **Application Security Verification Standard(애플리케이션 보안 검증 표준)**의 약자입니다. OWASP(Open Worldwide Application Security Project, 오픈 웹 애플리케이션 보안 프로젝트)가 관리하는 표준으로, 웹 애플리케이션과 서비스의 보안 요구사항을 설계·개발·테스트 과정에서 확인할 수 있도록 정리합니다. 이번 사이트는 공식 안정판인 ASVS 5.0.0을 기준으로 삼았습니다. OWASP ASVS 공식 프로젝트
표준을 한 수업씩 익힐 수 있도록
보안 표준은 꼼꼼하게 읽을수록 좋지만, 처음부터 두꺼운 문서와 요구사항 번호를 마주하면 어디서 시작해야 할지 막막해질 수 있습니다. 그래서 원문을 단순히 옮기는 대신, 익숙한 개발 상황에서 출발해 개념과 확인할 점을 하나씩 따라가도록 구성했습니다.
수업은 ASVS의 기본 개념부터 입력 검증과 인젝션, 인증과 세션, 권한, JWT·OAuth·OIDC, 브라우저·API·파일 처리, 암호화와 데이터 보호, 설정과 로그, 검증 증거 남기기까지 이어집니다. 사이트에는 다음 자료를 담았습니다.
- 핵심 주제를 다루는 10개 수업
- 개념을 실제 상황에 연결하는 30개 예제
- 답과 해설을 확인할 수 있는 20개 퀴즈
- ASVS 17개 장의 구성과 공식 원문 링크
- 업무 영역과 역할에 따라 내용을 연결해보는 학습 안내
정답을 맞히는 데서 끝나지 않고, 왜 그런 답이 맞는지와 실무에서 무엇을 확인할 수 있는지도 함께 살펴봅니다. 수업을 읽은 뒤에는 관련 요구사항을 찾아보고, 테스트 결과와 증거를 남기는 과정으로 이어가도록 했습니다.
“읽었다”에서 “확인했다”로
제가 특히 중요하게 본 건 학습과 검증을 구분하는 것입니다. 수업을 읽거나 퀴즈를 풀었다고 서비스가 안전해지는 것은 아닙니다. 실제 시스템의 범위에 맞는 요구사항을 선택하고, 테스트를 수행하고, 결과와 근거를 남겨야 합니다.
그래서 사이트의 방향도 “보안 개념을 배웠다”에서 멈추지 않도록 잡았습니다. 로그인 흐름을 확인했다면 인증과 세션에 관한 요구사항으로 이어가고, API 권한을 살펴봤다면 다른 사용자의 데이터를 볼 수 없는지 테스트한 결과를 남기는 식입니다. 학습한 내용을 실제 확인 작업과 연결하는 것이 목표입니다.
이 사이트는 OWASP가 운영하거나 인증한 자료가 아닌 비공식 학습 공간입니다. 한편 공식 ASVS 5.0.0 한국어 번역 자료도 공개되어 있습니다. 한국어 학습 사이트의 설명과 예제로 개념을 잡고, 정확한 요구사항을 확인할 때는 공식 문서를 함께 참고하면 좋겠습니다. OWASP ASVS 프로젝트와 번역 안내 · ASVS 5.0.0 한국어 PDF
사이트를 만들고 나서
이번 작업을 하면서 기준 문서를 읽는 것과, 다른 사람이 따라갈 수 있는 학습 흐름으로 바꾸는 것은 꽤 다른 일이라는 점을 다시 느꼈습니다. 내용을 작게 나누고, 사례를 붙이고, 스스로 이해했는지 확인할 수 있는 질문을 마련해야 비로소 첫걸음이 쉬워집니다.
“안전합니다”라는 말을 조금 더 구체적으로 설명하고 싶다면, 무엇을 확인했고 어떤 증거가 있는지부터 살펴볼 수 있습니다. 이번 사이트가 ASVS를 처음 접하는 분들이 그 첫걸음을 떼는 데 도움이 되면 좋겠습니다.
ASVS 함께 배우기: 학습 사이트 열기