| 보안 약점 | 설명 | 예시 및 안전한 코드 |
|---|---|---|
| 입력 데이터 검증 및 표현 | • 사용자로부터 입력받은 데이터에 대한 유효성 검증이 누락될 경우 발생. • SQL 인젝션, XSS, 버퍼 오버플로우 등의 주된 원인. | • PreparedStatement 사용 (SQL 인젝션 방어).• 특수문자(<, >, &) 필터링 (XSS 방어). |
| 보안 기능 | • 인증, 인가, 암호화 등 보안 기능이 부적절하게 구현된 경우. | • 안전하지 않은 비밀번호 저장 (평문 저장). • 예측 가능한 세션 ID 사용. |
| 시간 및 상태 | • 여러 스레드나 프로세스가 공유 자원에 동시에 접근할 때 동기화가 부족하여 발생. | • 경쟁 조건(Race Condition): synchronized 키워드 등으로 임계 영역 보호. |
| 에러 처리 | • 에러 메시지에 민감한 정보(시스템 정보, DB 구조 등)가 포함되어 공격자에게 단서를 제공하는 경우. | • 상세한 오류는 로그에만 기록하고, 사용자에게는 "오류가 발생했습니다"와 같은 일반적인 메시지만 보여줌. |
| 코드 품질 | • 사용되지 않는 변수, 초기화되지 않은 변수 사용 등 코드 자체의 품질 문제. | • NULL 포인터 역참조(Null Pointer Dereference) 방지를 위한 NULL 체크. |
| 캡슐화 | • 외부에서 접근하면 안 되는 중요 데이터나 메서드가 public으로 잘못 공개된 경우. | • 멤버 변수는 private으로 선언하고, 필요한 경우에만 public Getter/Setter 제공. |
| 공격 유형 | 설명 | 핵심 원인 |
|---|---|---|
| SQL 인젝션 (SQL Injection) | 공격자가 웹 애플리케이션의 입력값에 악의적인 SQL 구문을 삽입하여, 데이터베이스를 비정상적으로 조작하는 공격. | 입력값에 대한 검증 및 필터링 부재. |
| 크로스 사이트 스크립팅 (XSS, Cross-Site Scripting) | 공격자가 악의적인 스크립트(JavaScript)를 웹 페이지에 삽입하여, 해당 페이지를 방문하는 다른 사용자의 브라우저에서 스크립트가 실행되도록 만드는 공격. (쿠키 탈취 등) | 출력값에 대한 필터링 및 이스케이프(escape) 처리 부재. |
| 사이트 간 요청 위조 (CSRF, Cross-Site Request Forgery) | 사용자가 자신의 의지와는 무관하게, 공격자가 의도한 악의적인 요청(글 삭제, 정보 수정 등)을 서버에 보내도록 위조하는 공격. (로그인된 세션 쿠키 악용) | 요청의 출처를 검증하는 메커니즘(CSRF 토큰 등) 부재. |