사전 목록
SQL 인젝션

SQL 인젝션

SQL 인젝션은 애플리케이션이 사용자 입력을 데이터와 명령으로 안전하게 분리하지 못할 때 공격자가 데이터베이스 질의의 의미를 바꾸는 취약점입니다.

#SQL 인젝션#SQL Injection#SQLi

SQL 인젝션

SQL 인젝션은 입력값이 문자열 결합을 통해 동적 SQL 문에 포함될 때 발생할 수 있습니다. 공격자는 입력을 이용해 인증 조건을 바꾸거나 데이터 조회·수정·삭제 범위를 확장하려고 시도합니다.

핵심 방어는 준비된 문장과 매개변수화 질의를 사용해 입력값을 데이터로 처리하는 것입니다. 입력 검증과 이스케이프는 보조 통제이며 데이터베이스 계정의 최소권한과 네트워크 분리도 피해 범위를 줄입니다.

핵심 특성

발생 원인사용자 입력과 SQL 명령을 안전하게 분리하지 못한 동적 질의에서 발생합니다.

주요 영향인증 우회, 정보 조회, 데이터 변경·삭제, 시스템 영향으로 이어질 수 있습니다.

핵심 방어매개변수화 질의와 최소권한이 중심입니다.

사용 맥락과 작동 원리

웹 폼, URL 매개변수, HTTP 헤더, API JSON, 배치 파일 등 데이터베이스 질의에 도달하는 모든 입력이 공격면이 될 수 있습니다. 오류 메시지가 DB 종류와 질의 구조를 노출하면 공격자가 취약점을 파악하기 쉬워집니다.

ORM을 사용해도 원시 질의를 문자열로 구성하거나 정렬·열 이름을 직접 삽입하면 취약점이 생길 수 있습니다. 저장 프로시저도 내부에서 동적 SQL을 안전하지 않게 만들면 위험합니다.

유출·오용 시 위험

성공한 SQL 인젝션은 대량 개인정보 유출, 관리자 계정 탈취, 데이터 위변조로 이어질 수 있습니다. 데이터베이스와 운영체제 권한이 과도하면 파일 접근과 추가 침투 가능성이 커집니다.

공격이 오랜 기간 반복되면 로그에 비정상 오류, 긴 매개변수, 평소와 다른 조회량이 남을 수 있습니다. WAF 차단 기록만으로 취약점 제거를 완료했다고 판단해서는 안 됩니다.

사건 공지에서 확인할 항목

개인이 취할 조치

조직의 보호조치

혼동하기 쉬운 개념

입력 검증은 허용되는 형식과 범위를 확인합니다. 매개변수화는 입력과 명령의 구조를 분리합니다. XSS는 브라우저에서 스크립트가 실행되는 취약점입니다. 명령 인젝션은 운영체제 명령 구성에 입력이 개입하는 취약점입니다.

공식 참고자료

OWASP — SQL 인젝션 방어

OWASP — 데이터베이스 보안 지침

OWASP Top 10 관련 보안 지침