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 图片上添加透明度渐变的效果
Jun 29 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
php中取得文件的后缀名?
Feb 20 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
Jun 06 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
Aug 06 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
CI框架Session.php源码分析
Nov 03 PHP
标准PHP的AES加密算法类
Mar 12 PHP
php 三大特点:封装,继承,多态
Feb 19 PHP
PHP中“=>
Mar 01 PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 PHP
laravel Model 执行事务的实现
Oct 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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
Python with的用法
2014/08/22 Python
python模拟鼠标拖动操作的方法
2015/03/11 Python
python中日期和时间格式化输出的方法小结
2015/03/19 Python
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
python读写ini配置文件方法实例分析
2015/06/30 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
Python中格式化format()方法详解
2017/04/01 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
常用的HTML5列表标签
2017/06/20 HTML / CSS
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
几个Linux面试题笔试题
2016/08/01 面试题
幼儿园教师节活动方案
2014/02/02 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
2014年综合治理工作总结
2014/11/20 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
高温慰问简报
2015/07/21 职场文书
Python实现单例模式的5种方法
2021/06/15 Python
Pandas 数据编码的十种方法
2022/04/20 Python
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL