SQL - 문제 미리보기

문제 1804

hard
다음 배치 SQL 공격 시나리오에서 가장 위험한 결과는? 공격 입력: ```txt UserId: 105; DROP TABLE Suppliers ``` 생성되는 SQL: ```sql SELECT * FROM Users WHERE UserId = 105; DROP TABLE Suppliers; ```
A. 사용자 정보만 조회되고 추가 피해는 없다
B. Suppliers 테이블이 삭제되어 공급업체 데이터가 영구 손실된다
C. 시스템이 일시적으로 느려진다
D. 로그 파일이 삭제된다

정답: 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 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.