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 相关文章推荐
从C/C++迁移到PHP——判断字符类型的函数
Oct 09 PHP
php在字符串中查找另一个字符串
Nov 19 PHP
PHP 采集心得技巧
May 15 PHP
php 分页类 扩展代码
Jun 11 PHP
PHP中MVC模式的模板引擎开发经验分享
Mar 23 PHP
使用PHP实现二分查找算法代码分享
Jun 24 PHP
基于php iconv函数的使用详解
Jun 09 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
Laravel 5.5 异常处理 & 错误日志的解决
Oct 17 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 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 自动加载的简单实现(推荐)
2016/08/12 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
PHP7新增函数
2021/03/09 PHP
jQuery 对象中的类数组操作
2009/04/27 Javascript
javascript 写类方式之十
2009/07/05 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
2020/04/21 Javascript
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
Python正则表达式完全指南
2017/05/25 Python
Python socket聊天脚本代码实例
2020/01/02 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
社区活动总结报告
2014/05/05 职场文书
产品包装策划方案
2014/05/18 职场文书
入党积极分子个人总结
2015/03/02 职场文书
小人国观后感
2015/06/11 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
vue中 this.$set的使用详解
2021/11/17 Vue.js