在数据库输入上检查斜杠
如果您正在查询数据库,则应该养成清理输入内容的习惯,即使它将来可能不是来自用户。SQL注入攻击太普遍了,可以很容易地加以预防。
该addslashes()函数以字符串作为输入,并在数据库查询中需要引用的所有字符之前返回带反斜杠的字符串。它所作用的字符是双引号,双引号,反斜杠和NUL(或NULL字节)。魔术引号addslashes()在所有COOKIE,GET和POST数据上运行。重要的是不要addslashes()在同一字符串上使用和魔术引号,因为所有内容都会被双转义。
使用该get_magic_quotes_gpc()功能查看是否启用了魔引号。如果不是,则使用PHP函数addslashes()执行相同的操作。如果您有任何用户输入以便清理将要发送到数据库的任何内容,请使用此功能。
即使禁用了魔术引号,以下函数也会在字符串中添加斜杠。
private static function checkslash($slashes_string) { if (get_magic_quotes_gpc()==1) { return $slashes_string; } else { return addslashes($slashes_string); }; }
您永远不应依赖在任何服务器上启用magic_quotes。因此,养成对您的SQL字符串执行此操作的习惯。
$sql='SELECT*FROMtableWHEREtable.name="'.checkslash($string).'"';
这具有转义字符串中所有可能导致错误或安全漏洞的字符的作用。