PHP MySQL mysql_real_escape_string可以防mysql注入吗?
大家讲道理
大家讲道理 2016-11-11 11:46:32
[MySQL讨论组]

这里不讨论xss和其他安全漏洞,只考虑mysql注入一种情况。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
代言

你好题主,我来回答一下这个问题。

首先,PHP语言,不做预处理查询来进行Mysql拼接的话,我们使用mysql_real_escape_string()、addslashes()等函数需要注意几个问题。
1、这些函数过滤哪些值?

mysql_real_escape_string():
\x00
\n
\r
\
'
"
\x1a addslashes():
单引号(')
双引号(")
反斜杠(\)
NULL

此时,我们注意到了有共同之处,都过滤了

'
"
\

于是,我们要注意以下几点:
PHP自拼接Mysql语句,使用上述函数对入库参数进行过滤时,一定要把入库的参数进行单撇号'""' 过滤,例如:

$sql = "SELECT * FROM users WHERE user='" . $user . "' AND password='" . $pwd . "'";

数据库格式一定要是utf8,否则很可能因为网页和数据库编码格式不统一造成过滤逃逸问题。

谢谢。


代言

绝对可以,没问题摸摸大

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号