PHP's "\" character generated by magic quotes will bring certain security problems, such as the following code snippet:
// ?xigr='ryat function daddslashes($string, $force = 0) { !defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc()); if(!MAGIC_QUOTES_GPC || $force) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = daddslashes($val, $force); } } else { $string = addslashes($string); } } return $string; } ... foreach(array('_COOKIE', '_POST', '_GET') as $_request) { foreach($$_request as $_key => $_value) { $_key{0} != '_' && $$_key = daddslashes($_value); } } echo $xigr['hi']; // echo \
The above code originally expected to obtain an array variable $xigr['hi'] after being safely processed by dadslashes(), but there is no strict type regulation for the variable $xigr. When we submit a string variable $xigr='ryat, it becomes \'ryat after the above processing, and at the end $xigr['hi'] will output \. If this variable is introduced into the SQL statement, it will cause serious security problems. Let's take a look at the following code snippet:
... if($xigr) { foreach($xigr as $k => $v) { $uids[] = $v['uid']; } $query = $db->query("SELECT uid FROM users WHERE uid IN ('".implode("','", $uids)."')");
Using the ideas mentioned above, by submitting a construction form like ?xigr[]='&xigr[][uid]=evilcode, it can easily break through GPC or similar security processing and form SQL injection vulnerabilities! This should be given enough attention!