为了账号安全,请及时绑定邮箱和手机立即绑定

没人问update的$keyAndvalues[]=后面key用的 ` value用的‘吗?

$keyAndvalues[]="`" . $key . "`" . "=" . "'" . $value . "'");  这里$value被 ' 包括而不是 ` ,这里的$value 不需要对特殊字符进行转义吗

正在回答

4 回答

因为sql中只有库名、表名、字段名可能会与sql关键字冲突,而 ` 这个字符在上面这行代码里就是把字段名括起来,从而避免冲突,至于 value 不需要转义,是的,没错,value 的内容是值,sql在处理值时是不会和关键字冲突的。

0 回复 有任何疑惑可以回复我~
#1

坚持MyDream 提问者

非常感谢!
2017-03-03 回复 有任何疑惑可以回复我~

嗯嗯。泽成的补充是对的。这个教程好像有个全局过滤。记不太清楚了。

0 回复 有任何疑惑可以回复我~
#1

坚持MyDream 提问者

好的,老师
2017-03-21 回复 有任何疑惑可以回复我~

回复 坚持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注入的关键字给替换掉。

1 回复 有任何疑惑可以回复我~
#1

坚持MyDream 提问者

恩恩,这个倒是知道了,不过写出来看到这的人 都会懂!
2017-03-03 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

没人问update的$keyAndvalues[]=后面key用的 ` value用的‘吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信