PHP中mysql_escape_string()函数用法分析

mysql_escape_string()函数用于转义SQL语句中的字符串,防止SQL注入。其使用格式为:

string mysql_escape_string(string $str)

参数$str为需要转义的字符串,函数会对字符串中特殊字符进行转义,并返回转义后的字符串。例如:

$name = "John' OR 1 = 1";
$escaped = mysql_escape_string($name);
// $escaped = "John\' OR 1 = 1"

对单引号(‘)进行了转义,变成\’。如果不进行转义,这个SQL查询:

sql
SELECT * FROM users WHERE name = '$name' 

会变成:

sql
SELECT * FROM users WHERE name = 'John' OR 1 = 1' 

iches注入。使用mysql_escape_string()转义后,查询变成:

sql
SELECT * FROM users WHERE name = 'John\' OR 1 = 1'  

单引号被转义,SQL语义不会被破坏,安全查询用户输入参数。另外,mysql_escape_string()不能处理%或_通配符,在LIKE语句中需要额外注意。例如:

$input = "John%";
$escaped = mysql_escape_string($input);

$sql = "SELECT * FROM users WHERE name LIKE '$escaped'";  

查询会变成:

SELECT * FROM users WHERE name LIKE 'John\%'  

此时不会匹配任何数据,需要在SQL端再次转义\才能正常使用通配符查询。

总之,在SQL查询中使用用户输入参数时,必须使用mysql_escape_string()或mysqli_real_escape_string()等函数进行转义,以防SQL注入风险

任何地方如果涉及到用户输入与SQL查询串联,都必须保证输入参数被正确转义,这是网站安全的基础。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论