본문 바로가기

매일 해킹공부/웹 해킹

SQL Injection 대응방안

sql injection 공격을 막기위해서 어떠한 대응방안이 있는지 살펴보자.

 

1. Prepared statement

sql쿼리의 틀을 미리 생성하여 대체할 값을 나중에 지정한다.

사전 컴파일 되어 캐시에 저장이 되고, 최종 쿼리를 다시 컴파일하지 않는다.

따라서, prepared statement를 사용하면 sql injection에 대한 영항을 받지 않는다.

참고 
https://velog.io/@jsj3282/Statement%EB%B3%B4%EB%8B%A4-Preparedstatement%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC-%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0%EC%84%B1%EB%8A%A5-%EB%B3%B4%EC%95%88-%EC%B8%A1%EB%A9%B4

 

2. 화이트 리스트 기반의 필터링 or 웹방화벽

사실 prepared statement를 사용하면 sql injection이 불가능하기 때문에

사용하는 것이 가장 이상적이나, 여러가지 상황에 의하여 prepared statement 사용이 어려운 경우,

블랙리스트가 아닌 화이트 리스트 기반의 필터링을 사용하거나 웹방화벽 도입을 하는것을 권장한다.

참고
웹방화벽과 방화벽 차이 :https://post.naver.com/viewer/postView.nhn?volumeNo=28746088&memberNo=29566044

화이트리스팅 : https://www.itworld.co.kr/news/156056