답변 2개
해커가 SELECT full_name AND password WHERE user_name='bla' OR '1'='1' 이렇게 수정을 하는 것이 아니라
user_name 과 password를 입력받아서 쿼리를 만들때 문제가 생길 수 잇다는 겁니다
쿼리가 아래와 같다고 하면
SELECT full_name AND password WHERE user_name='$user_name' and password='$pass'
예를들어 해커가 form의 user_name 입력칸에 bla' or '1=1' -- ' 라고 입력한 것을 그대로 사용하면
SELECT full_name AND password WHERE user_name='bla' or '1=1' -- '' and password='1234'
이런 형태의 쿼리가 되어 아주 자알 쿼리를 실행하게 됩니다
addslashes($user_name)을 하게되면 위와 같은 정상적인 쿼리문이 만들어지지 않게 된다는 겁니다
WHERE user_name='bla\' OR \'1=1\' -- \'' 이렇게 될테니까요
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
sql 인젝션 대응을 하기 위에 addslashes ( ) 함수를 흔히 이용하는 이유를 알고 싶은거거든요.
백슬래쉬를 ', ",\, 등 앞에 추가시키는 기능을 하면, 그것이 정확히 어떻게 sql 인젝션을 막는건가요?
이해가 안 가서요.
예를 들어,
SELECT full_name AND password WHERE user_name='bla' OR '1'='1'
어느 해커가 sql 을 이렇게 수정하였다 치면,
제가 addslashes([$_POST('user_name')]);
addslashes([$_POST('password')]);
방지를 위해 이렇게 쓴다고 하여도,
결국엔
SELECT full_name AND password WHERE user_name=\'bla\' OR \'1\'=\'1\'
가 되어, \'1\'=\'1\' 가 성립이 되어 결국에는 유출이 되고 말지 않나요??
\는 백슬래쉬입니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인