Skip to content

웹 시큐어 코딩 기초

웹 취약점 이름만 외우는 것이 아니라, 왜 문제가 생기고 코드에서 어떻게 막는지 이해하기 위한 방어 중심 학습 자료

학습 대상

  • 웹 보안을 처음 체계적으로 정리해 보고 싶은 프론트엔드·백엔드 개발자
  • SQL 인젝션, XSS, CSRF 같은 용어는 알지만 방어 원칙이 헷갈리는 분
  • 실무 코드 리뷰에서 보안 체크 포인트를 빠르게 잡고 싶은 분
  • 오래된 보안 강의 내용을 현재 기준으로 다시 이해하고 싶은 분

학습 목표

  • 웹 시큐어 코딩을 위협 모델과 개발 프로세스 관점에서 설명할 수 있다
  • 입력 검증과 출력 인코딩의 역할 차이를 명확히 구분할 수 있다
  • SQL 인젝션, XSS, CSRF, SSRF, XXE, 경로 탐색의 방어 원칙을 이해한다
  • 파일 업로드·다운로드, 세션·쿠키, 접근 통제를 실무 코드 기준으로 점검할 수 있다
  • 낡은 대응 방식과 현재 권장되는 대응 방식을 구분할 수 있다

선행 조건

  • HTTP 요청과 응답의 기본 흐름을 알고 있으면 좋다
  • 쿠키, 세션, 데이터베이스, 파일 업로드 같은 웹 기능을 한 번쯤 구현해 본 경험이 있으면 이해가 더 빠르다
  • 특정 언어보다 웹 애플리케이션의 공통 구조를 기준으로 읽으면 된다

학습 원칙

  • 이 시리즈는 공격 재현 가이드가 아니라 방어 설계 원칙을 익히는 데 목적이 있다
  • 실제 익스플로잇 절차 대신 취약점이 성립하는 구조와 안전한 구현 패턴에 집중한다
  • 실습이 필요하면 승인된 학습 환경만 사용한다 PortSwigger Web Security Academy, OWASP Juice Shop 같은 목적형 교육 환경을 권장한다

학습 로드맵

목차

챕터제목핵심 내용
01웹 위협 모델과 시큐어 코딩 원칙OWASP Top 10, SSDLC, Secure by Default, 방어 우선 사고
02입력 검증과 컨텍스트 출력 인코딩Allow-list 검증, 타입 강제, HTML/JS/URL별 인코딩
03SQL 인젝션과 파라미터화된 쿼리Prepared Statement, ORM 바인딩, Raw SQL 주의점
04XSS와 CSP·Trusted Types 심층 방어Stored/Reflected/DOM XSS, CSP, Trusted Types, Sanitizer
05CSRF와 세션·쿠키 보안CSRF 토큰, SameSite, Secure/HttpOnly, 재인증
06서버사이드 인젝션: Command·SSRF·XXE쉘 호출 제거, 안전한 외부 요청, XML 파서 보안
07파일 업로드·다운로드·경로 탐색파일명 생성, MIME/매직 바이트 검증, 안전한 다운로드
08인증·인가·접근 통제·IDORBroken Access Control, 서버 측 권한 검증, 비밀번호 저장

핵심 키워드 맵

이 시리즈를 읽는 법

  • 취약점 이름보다 먼저 어떤 경계가 무너졌는가를 본다
  • 입력 검증과 출력 인코딩을 같은 문제로 섞지 않는다
  • 프레임워크 기본 기능을 끄지 않는 것이 첫 번째 방어라는 점을 기억한다
  • 코드 예시는 특정 언어 문법보다 구조를 읽는 용도로 본다
  • 각 장 끝의 체크리스트를 PR 리뷰 기준으로 다시 읽는다

원문에서 현대화한 핵심 포인트

  • APM Setup, magic_quotes_gpc, MySQL PASSWORD() 같은 오래된 실습 절차는 현재 기준에 맞게 제거하거나 역사적 맥락으로만 다룬다
  • mysqli_real_escape_string 같은 이스케이프 중심 설명은 보조 수단으로 낮추고, 파라미터화된 쿼리를 기본 방어로 정리한다
  • XSS는 저장 시점 치환보다 출력 컨텍스트별 인코딩CSP 중심으로 재구성한다
  • 세션 보안은 IP 고정 대신 Secure, HttpOnly, SameSite, __Host-, 세션 회전, 재인증 중심으로 설명한다
  • 파일 업로드는 실행 가능 경로 차단, 파일 격리 저장, 안전한 응답 헤더까지 포함해 다룬다

출처

  • 원문 자료: ing-0016-웹개발자를위한-시큐어코딩.md 강의 전사본
  • OWASP Top 10 2021
  • OWASP Cheat Sheet Series
  • PortSwigger Web Security Academy