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 21 PHP
PHP 显示客户端IP与服务器IP的代码
Oct 12 PHP
php 搜索框提示(自动完成)实例代码
Feb 05 PHP
php多文件上传实现代码
Feb 20 PHP
Linux下安装oracle客户端并配置php5.3
Oct 12 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 PHP
PHP常用文件操作函数和简单实例分析
Jun 03 PHP
php实现的二叉树遍历算法示例
Jun 15 PHP
ThinkPHP开发--使用七牛云储存
Sep 14 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 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
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
微信小程序 for 循环详解
2016/10/09 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
Python文件和目录操作详解
2015/02/08 Python
简单的python后台管理程序
2017/04/13 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
Python基础之文件读取的讲解
2019/02/16 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
python中np是做什么的
2020/07/21 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
高中生校园生活自我评价
2013/09/19 职场文书
远程研修随笔感言
2014/02/10 职场文书
毕业实习单位意见
2015/06/04 职场文书
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle