没人问update的$keyAndvalues[]=后面key用的 ` value用的‘吗?
$keyAndvalues[]="`" . $key . "`" . "=" . "'" . $value . "'"); 这里$value被 ' 包括而不是 ` ,这里的$value 不需要对特殊字符进行转义吗
$keyAndvalues[]="`" . $key . "`" . "=" . "'" . $value . "'"); 这里$value被 ' 包括而不是 ` ,这里的$value 不需要对特殊字符进行转义吗
2017-02-27
回复 坚持MyDream:不客气,顺便补充说明一下,对于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注入的关键字给替换掉。
举报