정보보안의 원리
웹 416쪽 무료 · 종이책 B5 416쪽
CASE STUDY · 방향 6 · 원문 사례
첫 번째 결과에는 두 책이 모두 나오고, 두 번째 결과는 빈 목록 []입니다.
출처: 두 번째 발걸음 · SQL이 자료와 문법을 혼동하지 않게 한다. 연결된 쪽은 해당 발걸음의 시작 쪽입니다.
첫 번째 결과에는 두 책이 모두 나오고, 두 번째 결과는 빈 목록 []입니다.
첫 질의에서는 owner의 작은따옴표가 원래 값의 경계를 끝냅니다. 뒤의 OR 1=1이 질의 조건으로 해석되어 두 행 모두 참이 됩니다. -- 뒤는 SQLite에서 주석으로 처리됩니다. 문제는 데이터로 받은 내용이 SQL 구조에 들어간 지점입니다.
두 번째 질의의 ?는 값을 넣을 자리입니다. 실행 함수의 두 번째 인수로 owner 전체를 전달하므로 해당 문자열 자체와 일치하는 소유자를 찾습니다. 그런 소유자는 가상 테이블에 없으므로 빈 목록이 나옵니다. 공격처럼 보이는 문자열을 단순히 지워서 해결한 것이 아닙니다.
일반 입력 alice를 전달하면 안전한 질의는 alice의 책 하나를 반환합니다. 실제 이름에 작은따옴표가 들어 있는 정상 데이터도 문법을 손으로 조립하지 않고 전달할 수 있습니다.
깨달음데이터가 무엇이든 그 데이터가 SQL 문법의 자리를 차지하지 않도록 구조를 분리하는 것이 핵심입니다.
© K-BOOKS · 무료 웹 열람용 콘텐츠입니다. 무단 복제·저장·인쇄·재배포를 제한합니다.
무료 학습은 그대로, 종이책은 필요한 분을 위한 선택지입니다.
웹 416쪽 무료 · 종이책 B5 416쪽
웹 513쪽 무료 · 종이책 B5 513쪽