웹 애플리케이션에서 발생하는 취약점 종류는 다음과 같다.

1. 입력값 검증 미흡 (Injection 계열)

사용자 입력을 신뢰해서 발생하는 취약점입니다. SQL 인젝션, XSS(크로스 사이트 스크립팅), OS 커맨드 인젝션, LDAP 인젝션, XXE(XML 외부 개체), 경로 조작(Path Traversal) 등이 여기 속합니다. "데이터를 명령/코드로 해석하게 만든다"는 공통점이 있습니다.

2. 인증(Authentication) 취약점

사용자가 "누구인지" 확인하는 과정의 결함입니다. 취약한 비밀번호 정책, 무차별 대입(brute force) 방어 부재, 자격증명 평문 전송, 다단계 인증 우회 등이 해당합니다.

3. 인가/접근 통제(Authorization / Access Control) 취약점

인증된 사용자가 "무엇을 할 수 있는지"에 대한 통제 실패입니다. 대표적으로 IDOR(직접 객체 참조로 남의 데이터 접근), 권한 상승(privilege escalation), 접근 통제 우회가 있습니다. OWASP에서 가장 흔한 취약점으로 꼽습니다.

4. 세션 관리(Session Management) 취약점

세션 고정(session fixation), 세션 하이재킹, 예측 가능한 세션 ID, 로그아웃 후 세션 미파기 등 세션의 생성·유지·폐기 과정의 결함입니다.

5. CSRF (Cross-Site Request Forgery)

사용자의 인증된 상태(세션/쿠키)를 악용해 의도하지 않은 요청을 대신 보내게 만드는 취약점입니다. 입력값 문제라기보다 "요청의 출처를 검증하지 않는" 신뢰 문제입니다.

6. 암호화/민감정보 노출(Cryptographic Failures)

약한 암호 알고리즘 사용, 평문 저장·전송, 하드코딩된 키, 취약한 난수 생성 등 데이터 보호 실패입니다.

7. 보안 설정 오류(Security Misconfiguration)

기본 계정/비밀번호 방치, 불필요한 서비스·디렉터리 노출, 상세 에러 메시지 노출, 잘못된 권한 설정 등 구현이 아닌 "설정"에서 오는 취약점입니다.

8. 비즈니스 로직(Business Logic) 취약점

문법적으로는 정상 요청이지만 애플리케이션의 의도된 흐름을 악용하는 경우입니다. 예를 들어 결제 금액 조작, 수량 음수 입력으로 환불 유도, 인증 단계 건너뛰기 등입니다. 자동 스캐너로 잘 안 잡히는 편입니다.

9. 취약한 구성요소 사용(Vulnerable Components)

알려진 취약점이 있는 라이브러리·프레임워크·플러그인을 패치 없이 사용하는 경우입니다.