php addslashes和mysql_real_escape_string


Posted in PHP onJanuary 24, 2010

很好的说明了addslashes和mysql_real_escape_string的区别,虽然国内很多PHP coder仍在依靠addslashes防止SQL注入(包括我在内),我还是建议大家加强中文防止SQL注入的检查。addslashes的问题在于黑客可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会被看作是单引号,所以addslashes无法成功拦截。
当然addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string吧。
另外对于php手册中get_magic_quotes_gpc的举例:

if (!get_magic_quotes_gpc()) { 
$lastname = addslashes($_POST[‘lastname']); 
} else { 
$lastname = $_POST[‘lastname']; 
}

最好对magic_quotes_gpc已经开放的情况下,还是对$_POST['lastname']进行检查一下。
再说下mysql_real_escape_string和mysql_escape_string这2个函数的区别:
mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP 5)的情况下才能使用。否则只能用 mysql_escape_string ,两者的区别是:

mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。

总结一下:

addslashes() 是强行加;
mysql_real_escape_string() 会判断字符集,但是对PHP版本有要求;
mysql_escape_string不考虑连接的当前字符集。

PHP 相关文章推荐
PHP的FTP学习(三)
Oct 09 PHP
php access 数据连接与读取保存编辑数据的实现代码
May 12 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
May 10 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
11个PHPer必须要了解的编程规范
Sep 22 PHP
PHP统计目录大小的自定义函数分享
Nov 18 PHP
php多重接口的实现方法
Jun 20 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 PHP
PHPMailer 中文使用说明小结
Jan 22 #PHP
关于php fread()使用技巧
Jan 22 #PHP
PHP 时间转换Unix时间戳代码
Jan 22 #PHP
PHP 实用代码收集
Jan 22 #PHP
在命令行下运行PHP脚本[带参数]的方法
Jan 22 #PHP
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 #PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 #PHP
You might like
基于mysql的论坛(3)
2006/10/09 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
ThinkPHP入口文件设置及相关注意事项分析
2014/12/05 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
Python读取mp3中ID3信息的方法
2015/03/05 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
python安装numpy&安装matplotlib& scipy的教程
2017/11/02 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
python3中zip()函数使用详解
2018/06/29 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
python画环形图的方法
2020/03/25 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
2021/01/18 Python
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
文明单位汇报材料
2014/12/24 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
LeetCode189轮转数组python示例
2022/08/05 Python