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.MVC的模板标签系统(二)
Sep 05 PHP
PHP中实现进程间通讯
Oct 09 PHP
php 时间计算问题小结
Jan 04 PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 PHP
php文件上传的简单实例
Oct 19 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
thinkphp框架实现删除和批量删除
Jun 29 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
yii2-GridView在开发中常用的功能及技巧总结
Jan 07 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 PHP
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
Apr 16 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
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
2020/12/31 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
python制作最美应用的爬虫
2015/10/28 Python
python数组循环处理方法
2019/08/26 Python
pycharm快捷键汇总
2020/02/14 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
荷兰超市:DEEN
2018/03/14 全球购物
有机童装:Toby Tiger
2018/05/23 全球购物
酷瑞网络科技面试题
2012/03/30 面试题
资产评估专业学生的自我鉴定
2013/11/14 职场文书
教育局长自荐信范文
2013/12/22 职场文书
爱心倡议书范文
2014/05/12 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
分居协议书范本
2014/11/03 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python