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 各种排序算法实现代码
Aug 20 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
PHP5中实现多态的两种方法实例分享
Apr 21 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
php实现表单多按钮提交action的处理方法
Oct 24 PHP
理解php依赖注入和控制反转
May 11 PHP
PHP生成图片缩略图类示例
Jan 12 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
May 30 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 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代码
2012/06/08 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
return false;和e.preventDefault();的区别
2010/07/11 Javascript
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
优秀党支部书记事迹材料
2014/05/29 职场文书
2014年体育工作总结
2014/11/24 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP