Sql Injection 대응 방법

sql

 

 

sql injection 대응 방법 첫 번째

1. prepared statement

select ~~ where id= ?'

질의문이 db에 전달되고 db에 전달되고 db에서 컴파일이 일어난다. db가 기계어로 변환한 다음 이해하고 실행한 다음 사용자가 결과를 받는다.
질의문에 컴파일 해둠. 기계어로 다 바꿔놓는다.

1010000101010101010_________
1010101010101010101010101010

prepared statement 는 원래 처리 속도를 빠르게 하기 위해 나왔다.
근데 sql 인젝션도 막을 수 있었다.

prepared statement를 사용하면 sql 인젝션이 전혀 불가능하다.

그런데 sql 인젝션을 알아야 하는 이유.

1. 잘못 쓴 경우.

select
where id='?'

?를 넣어야 하는데 prepared statement 잘못 사용한 경우

2. prepared statement 못 쓰는 경우.
– order by에는? 사용 불가
– table 이름, column 이름에 사용 불가

where ____ like 사이에도 prepared statement 사용 못함

파라미터에 sort, ord 에 있으면 prepared statement 사용 못 하니 확인해 보자

 

 

 

sql injection 대응 방법 두 번째

2. white list filtering

단어를 기반으로 문자를 제한

화이트 > 특정 단어만 쓸 수 있게 하는 것.
블랙 > 특정 단어를 못 쓰게 하는 것

이런 식으로 화이트리스트 기반으로 필터링하면 막을 수 있다.

if(sort == 'title') {

}elif(sort == 'author')
else{
sort = 'title';
}

 

 

 

 

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다