1. SQL : 데이터베이스에서 데이터를 추출하고 조작하는 데에 사용하는 데이터 처리 언어
2. SQL INJECTION: 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위
3. SQL INJECTION 취약점: 데이터베이스와 연동된 웹 애플리케이션에서 공격자가 입력 폼 또는 URL 입력란에 SQL 구문을 삽입하여 DB를 조작할 수 있는 취약점
UNION 명령어
SQL UNION 명령어 개요
- UNION은 두 개 이상의 SELECT 결과 집합을 합치는 SQL 연산자.
- 각 SELECT문의 결과 컬럼 수, 순서, 데이터 타입이 일치해야 사용 가능.
- 기본적으로 중복된 행은 제거하고, 모두 표시하려면 UNION ALL을 사용.
기본 문법
SELECT column1, column2, ...
FROM table1
WHERE 조건;
UNION
SELECT column1, column2, ...
FROM table2
WHERE 조건;
주요 특징
컬럼 수 동일
SELECT id, name FROM users
UNION
SELECT id, title FROM posts;
데이터 타입 호환 필요
중복 제거와 유지
SELECT 'A'
UNION
SELECT 'A'; -- 결과: A (1개)
SELECT 'A'
UNION ALL
SELECT 'A'; -- 결과: A, A (2개)
정렬
SELECT id, name FROM users
UNION
SELECT id, title FROM posts
ORDER BY id DESC;
SQL Injection에서의 활용
- UNION은 원래 합집합 연산자이지만, SQL 인젝션에서 공격자가 다른 테이블/DB 정보를 덧붙여 노출시키는 데 자주 사용.
- 예:원래 쿼리 결과 뒤에 users 테이블의 계정 정보를 합쳐서 출력 가능.