SQL Injection 대응 방법

이정민·2023년 12월 13일

웹 해킹 공부 정리

목록 보기
10/18

SQLI의 사용법은 계속 알아봤지만 대응 방법도 중요합니다. 이번에는 대응 방법에 대해 알아보겠습니다.

Prepared Statement

직역해보면 준비된 상태라고 할 수 있습니다. 이 방법은 예를 들면 어떤 입력값을 받으면 select * from member where id='?'라는 쿼리에 ? 부분에 값을 집어넣는 것이 있다고 가정하면 입력받는 ? 부분을 제외한 다른 쿼리를 미리 컴파일 해두는 것입니다. 미리 컴파일했기 때문에 001010111000111?0101001 상태가 되고, 이후 ?부분에 입력받은 값은 모두 문자열로 처리해서 SQLI를 원천 차단하는 방법입니다.

White List Filtering

이전에 Prepared Statement 방법이 SQLI를 원천 차단하는데 다른 방법이 왜 필요할까요?
그 이유는 사용할 수 있다면 원천 차단할 수 있지만 사용할 수 없는 부분도 존재하기 때문입니다. 예를 들면 order by절이라던가 또는 테이블, 칼럼을 입력값으로 받는 경우가 있습니다. 이런 경우에는 어떻게 SQLI를 방지할 수 있을까요?
블랙 리스트는 많이 들어보셨을겁니다. 블랙 리스트란 금지, 사용할 수 없게하는 리스트를 의미합니다. 그렇다면 반대로 화이트 리스트는 어떤 것일까요? 화이트 리스트는 사용할 수 있는 리스트를 정해두고 그 외에는 차단하는 것입니다. 즉 화이트 리스트 필터링은 사용할 수 있는 단어만 정해뒀기때문에 ''나 union등의 등록되지 않은 단어들을 사용할 수 없습니다. 그러니 SQLI를 방지할 수 있는 방법이 됩니다.

이렇게 여러 방법을 알아봤지만 가장 중요한 것은 제대로 사용하는 것입니다. 제대로 사용하지 않으면 결국에 제대로 동작하지 않고 SQLI에 취약해질 수 있으니 '잘' 사용하는 것이 중요합니다.

profile
공부중

0개의 댓글