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 相关文章推荐
BBS(php & mysql)完整版(一)
Oct 09 PHP
用PHP的ob_start() 控制您的浏览器cache
Aug 03 PHP
PHP chmod 函数与批量修改文件目录权限
May 10 PHP
php下使用strpos需要注意 === 运算符
Jul 17 PHP
php利用cookie实现访问次数统计代码
May 19 PHP
PHP抽象类 介绍
Jun 13 PHP
php中sql注入漏洞示例 sql注入漏洞修复
Jan 24 PHP
使用PHPExcel操作Excel用法实例分析
Mar 26 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
Jan 24 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 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
PHP中实现进程间通讯
2006/10/09 PHP
Smarty+QUICKFORM小小演示
2007/02/25 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
js调用css属性写法
2013/09/21 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
python numpy格式化打印的实例
2018/05/14 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
渡河少年教学反思
2014/02/12 职场文书
电台实习生求职信
2014/02/25 职场文书
节能环保演讲稿
2014/08/28 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
2014年体育部工作总结
2014/11/13 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python