sql injection 을 피하기 위해 single quote 를 escape 시켜주는 코드를 작성해야할 필요가 있었는데, 매번 하나하나에 대해 mysql_real_escape_string 을 호출해주는 건 너무나도 번거로웠다. 뭔가 간단하게 처리할 방법이 없을까 하고 찾아봤더니 왠걸! array_map 이라는 마법의 함수를 발견할 수 있었다.
function stripslashes_deep($var){ $var = is_array($var)? array_map('stripslashes_deep', $var) : stripslashes($var); return $var; } function mysql_real_escape_string_deep($var){ $var = is_array($var)? array_map('mysql_real_escape_string_deep', $var) : mysql_real_escape_string($var); return $var; } if( get_magic_quotes_gpc() ){ if( is_array($_POST) ) $_POST = array_map( 'stripslashes_deep', $_POST ); if( is_array($_GET) ) $_GET = array_map( 'stripslashes_deep', $_GET ); } if( is_array($_POST) ) $_POST = array_map( 'mysql_real_escape_string_deep', $_POST ); if( is_array($_GET) ) $_GET = array_map( 'mysql_real_escape_string_deep', $_GET); |
common function 들을 정의해놓은 파일 맨 아래 저 코드를 삽입해버리니 sql injection 따위 이제 두려워할 필요가 없어졌다. 움하하핫!!
p.s) 그냥 array_map 에 stripslashes 나 mysql_real_escape_string 을 사용하게 되면 array 가 넘어온 경우 문제가 생길 수 있어서 약간 수정을 했습니다.
This entry was posted by 정태영 on Wednesday, October 24th, 2007 at 10:48 PM and is taged under array_map, avoid, Computer, mysql, mysql_real_escape_string, php, Programing, secure, sql injection, unix.