sql 관련 함수 질문
본문
안녕하세요 그누 열공중 궁금한것이 있어 질문드립니다.
sql_escape_string( ); sql_real_escape_string( ); 이 두 함수에 대하여 질문드립니다.
둘다 sql 인젝션 대응으로 백슬래쉬로 문자열 처리 하는것으로 보이는데,
어떠한 차이점으로 쓰임새가 다른지, 또한 어떠한 상황에서 사용 해야 최적인지 알고 싶습니다.
감사합니다.!
답변 2
sql_escape_string 는 addslashes 를 사용하며
https://github.com/gnuboard/gnuboard5/blob/master/config.php#L203
https://github.com/gnuboard/gnuboard5/blob/master/common.php#L90
sql_real_escape_string 은 mysqli_real_escape_string 또는 mysql_real_escape_string 를 사용합니다.
https://github.com/gnuboard/gnuboard5/blob/master/lib/common.lib.php#L2399
addslashes 는 단순히 문자열을 올바로 표현할수 있도록 역슬래시를 추가하는 동작을 수행하지만
mysql(i)_real_escape_string 은 실제 MySQL DB 가 escaping 에 필요하다고 판단되는 문자열을 필터링 할 것입니다.
따라서 SQL Injection 방어가 목적인 경우 sql_real_escape_string 을 사용하는 것이 좋습니다.
sql_escape_string 함수는 7.0 이하입니다. 하여 이제 더이상 사용 하시면 않된다는 겁니다.
따라서 7.0 이상부터는 sql_real_escape_string 함수만 지원이 됩니다.