SQL Injection 공격?????
SQL Injection 공격은 웹에서 데이터베이스 검색을 위해 사용자로부터 질의를 받아 처리하는 과정에서 질의문의 문법적 오류를 이용한 기법을 말한다. 정상적인 경우, 데이터베이스 검색을 위해 사용자가 웹 브라우저에 입력한 값은 웹 서버를 통해 웹 애플리케이션 서버(Web Application Server:WAS)로 전달된다. WAS는 전달받은 입력값을 토대로 SQL 질의문을 작성하여 데이터베이스에 전달하게 된다. 이때, 사용자가 비정상적인 값을 입력하였지만 입력값이 적절한지 검증하지 않는다면, 문법에 맞지 않는 SQL 질의문을 전달받은 데이터베이스는 오류를 발생시켜 결국에는 해킹에 악용될 수 있다.
예를 들어, 웹 페이지에서 ID와 패스워드를 입력받는 SQL 문장이 다음과 같이 있다.
select count (*) from users where userName=’ ” +username+ ” ‘ and userPass= ‘ ” +password+ ” ‘
사용자가 ID란에 ‘ or 1=* ** 와 같이 입력하고 패스워드에 아무것도 입력하지 않았을 경우 위의 SQL 문은 다음과 같이 처리된다.
select count (*) from users where userName=’ ‘ or 1=* ** ‘ and userPass= ‘ ‘
※위 사례의 경우 해킹에 이용될 수 있기 때문에 일부분을 ‘*’ 처리하였음.
이런 공격을 피하기 위해서는 웹 애플리케이션 개발시 사용자의 입력값을 철저히 검사하여야 하며, SQL 서버 계정도 기본 계정(sa)을 사용하지 않아야 한다.