
정답Cross Site Scripting(XSS) — 악성 스크립트를 삽입해 피해자 브라우저의 쿠키를 빼내 세션을 탈취합니다.
핵심 개념
쿠키 탈취를 통한 세션 하이재킹과 XSS
세션 하이재킹은 서버가 사용자를 식별하려고 발급한 세션 ID(대개 쿠키에 저장됩니다)를 가로채 정상 사용자인 것처럼 위장하는 공격입니다. 이때 가장 대표적으로 쓰이는 기법이 XSS(Cross Site Scripting)로, 게시판·검색창처럼 사용자 입력이 필터링 없이 웹 페이지에 그대로 출력되는 지점에 악성 스크립트를 삽입해 두면, 그 페이지를 열람한 다른 사용자의 브라우저에서 스크립트가 실행되어 document.cookie 값이 공격자 서버로 전송됩니다. 대응책은 입력값 검증과 출력 시 HTML 엔티티 인코딩이며, 쿠키에 HttpOnly·Secure 속성을 설정해 스크립트가 쿠키에 접근하지 못하게 막는 것도 중요합니다.
선지별 해설
①IP 스푸핑은 패킷의 출발지 IP 주소를 위조하여 신뢰 관계(r-command 등)를 악용하거나 추적을 회피하는 네트워크 계층 공격입니다. 브라우저에 저장된 쿠키 값을 직접 빼내는 기법이 아니므로 답이 될 수 없습니다.
②버퍼 오버플로우는 할당된 버퍼 크기를 넘는 데이터를 입력해 스택·힙의 인접 메모리와 복귀 주소를 덮어써 실행 흐름을 가로채는 공격입니다. 목적이 시스템 권한 획득이지 웹 쿠키 탈취가 아닙니다.
③XSS는 웹 페이지에 삽입한 악성 스크립트가 피해자 브라우저에서 실행되게 하는 공격으로, document.cookie를 읽어 공격자 서버로 전송함으로써 세션 쿠키를 탈취하는 대표적 기법입니다. 따라서 이 문항의 정답입니다.
④DoS(Denial of Service)는 대량의 트래픽이나 자원 고갈을 유발해 정상 서비스를 마비시키는 가용성 침해 공격입니다. 정보를 몰래 빼내는 기밀성 침해 공격이 아니므로 쿠키 탈취와는 관계가 없습니다.

정답SELECT는 저장된 데이터를 조회하는 DML(DQL)에 속하므로 DDL이 아닙니다.
핵심 개념
SQL 명령어의 분류 — DDL·DML·DCL
SQL은 기능에 따라 세 가지로 나뉩니다. DDL(데이터 정의어)은 테이블·인덱스·데이터베이스 같은 스키마 객체의 구조를 정의하고 변경하는 명령으로 CREATE, ALTER, DROP, TRUNCATE가 여기에 속합니다. DML(데이터 조작어)은 저장된 데이터 자체를 다루는 명령으로 SELECT, INSERT, UPDATE, DELETE가 해당하며, 특히 SELECT만 따로 DQL(질의어)로 부르기도 합니다. DCL(데이터 제어어)은 권한과 트랜잭션을 다루는 GRANT, REVOKE, COMMIT, ROLLBACK입니다. 이 분류는 SQL 인젝션 대응 시 계정별 권한을 어디까지 줄 것인지 판단하는 기준이 되기도 합니다.
선지별 해설
①CREATE TABLE은 새로운 테이블의 열 구성과 제약조건을 정의해 스키마 객체를 생성하는 명령이므로 전형적인 DDL입니다.
②DROP INDEX는 이미 만들어진 인덱스 객체를 삭제하는 명령입니다. 데이터가 아니라 스키마 구조를 제거하는 것이므로 DDL에 포함됩니다.
③SELECT는 테이블에 저장된 행을 조회해 결과 집합을 반환하는 명령으로, 구조가 아닌 데이터를 다루므로 DML(좁게는 DQL)입니다. DDL이 아니므로 이 선지가 정답입니다.
④ALTER DATABASE는 데이터베이스의 문자셋·정렬 방식 등 속성을 변경하는 명령으로, 객체 정의를 수정하는 ALTER 계열이므로 DDL에 해당합니다.