//mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。
对于value来说,sql本身是没啥问题的,但是PHP就有问题了,比如就拿教程里面的这种方式,把变量 $value 里的字符串直接拼接成为 sql 语句,就会存在很大的安全隐患,举个例子,假设你开发一个密码登录的接口,$value1 里存的是用户账号,$value2 里存的是用户密码,sql语句是这样子拼的:
$sql = "select * from user where `account` = '".$value1."' and `password` = '".$value2."'";
如果遇到恶意用户,他在登录时把密码填成 123456' or '1' = '1 ,想一下,你最后会得到什么样的sql语句,是不是
select * from user where `account` = 'zhangsan' and `password` = '123456' or '1' = '1'
于是只要 '1' = '1' 成立,sql语句就能执行成功。。。
是不是很可怕?这就叫做 sql 注入,是一种很古老的黑客攻击手段,所以现在一般会用 addslashes 对用户提交的内容进行转义,把那些可能会导致sql注入的关键字给替换掉。