[PHP+MYSQL] SQL_injection
1.SQL_injection
php에서 클라이언트로부터 DATA를 받을 때, 악의적인 클라이언트가 SQL문을 삽입하여 나의 어플리케이션에 큰 문제를 일으킬 가능성이 있다고 판단하였다.
SQL문을 받은 php는 그 SQL문을 MySQL서버에 전달할 것이고 그 이후에 일어날 수 있는 경우의 수는 무한가지였다.
그래서 mysqli_real_escape_string()함수로 filtering하여 방어할 수 있었다.
2.Attack
실제로 나의 웹 어플리케이션에 직접 공격을 해보았다.
아래는 정상적으로 게시된 날짜에 now()함수가 들어간 결과물이다.
이제 SQL문을 조작할 수 있는 코드를 직접 나의 웹서버에 전송해보았다.
아래에서는 공격을 성공해서 게시날짜인 created 컬럼에 now()함수가 주석처리 되고 이상한 날짜가 주입된 것을 볼 수 있다.
3.Protect
이 코드를 무효하기 위해서 mysqli_real_escape_string()함수를 사용해서 방어해보았다.
아래에서는 성공적으로 방어해서 코드들이 filterling된 것을 볼 수 있다.