SQL - 문제 미리보기
문제 1804
hard
다음 배치 SQL 공격 시나리오에서 가장 위험한 결과는?
공격 입력:
```txt
UserId: 105; DROP TABLE Suppliers
```
생성되는 SQL:
```sql
SELECT * FROM Users WHERE UserId = 105; DROP TABLE Suppliers;
```
정답: B
⦁ 배치 SQL 공격(Batched SQL Statements):
⦁ **세미콜론(;)**으로 여러 SQL 명령을 연결
⦁ 하나의 실행에서 여러 개의 SQL 문 순차 실행
⦁ 조회 후 추가적인 파괴적 명령 실행
⦁ 공격 분석:
```sql
SELECT * FROM Users WHERE UserId = 105; -- 1단계: 정상 조회
DROP TABLE Suppliers; -- 2단계: 테이블 삭제
```
⦁ `DROP TABLE Suppliers`의 파괴력:
⦁ 테이블 구조와 데이터 완전 삭제
⦁ 복구 불가능한 영구적 데이터 손실
⦁ 공급업체 관련 비즈니스 운영 중단
⦁ 다른 위험한 배치 공격 예시:
```sql
-- 사용자 데이터 삭제
105; DELETE FROM Users;
-- 새로운 관리자 계정 생성
105; INSERT INTO Users (Name, Role) VALUES ('hacker', 'admin');
-- 시스템 테이블 조작
105; UPDATE Users SET Password = 'hacked' WHERE Role = 'admin';
```
⦁ 방어 전략:
⦁ Prepared Statement 사용 (가장 효과적)
⦁ 배치 SQL 실행 비활성화
⦁ 데이터베이스 권한 최소화 (DROP 권한 제거)
⦁ 입력값 길이 제한 및 특수문자 필터링
💡 학습 팁
이 문제를 포함한 SQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.