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查询串联,都必须保证输入参数被正确转义,这是网站安全的基础。
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END
请登录后发表评论
注册
社交帐号登录