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 相关文章推荐
如何在WIN2K下安装PHP4.04
Oct 09 PHP
在任意字符集下正常显示网页的方法一
Apr 01 PHP
解析PHP多种序列化与反序列化的方法
Jun 06 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
php 魔术方法详解
Nov 11 PHP
ThinkPHP中Session用法详解
Nov 29 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
PHP对象的浅复制与深复制的实例详解
Oct 26 PHP
为何说PHP引用是个坑,要慎用
Apr 02 PHP
详解关于php的xdebug配置(编辑器vscode)
Jan 29 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 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
ajax缓存问题解决途径
2006/12/06 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
firefo xml 读写实现js代码
2009/06/11 Javascript
一句话JavaScript表单验证代码
2009/08/02 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
浅谈Webpack打包优化技巧
2018/06/12 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
angular 服务随记小结
2019/05/06 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
vue实现员工信息录入功能
2020/06/11 Javascript
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
2020/08/24 HTML / CSS
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
工商管理系学生的自我评价分享
2013/11/29 职场文书
社区志愿者心得体会
2014/01/03 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
学校教代会开幕词
2016/03/04 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python