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数组函数序列之array_flip() 将数组键名与值对调
Nov 07 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
zf框架的registry(注册表)使用示例
Mar 13 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
php实现文件下载实例分享
Jun 02 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
PHP判断表达式中括号是否匹配的简单实例
Oct 22 PHP
PHP AjaxForm提交图片上传并显示图片源码
Nov 29 PHP
php 常用的系统函数
Feb 07 PHP
Yii redis集合的基本使用教程
Jun 14 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
php分页函数
2006/07/08 PHP
PHP.MVC的模板标签系统(三)
2006/09/05 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
PHP内置加密函数详解
2016/11/20 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
javascript简单实现命名空间效果
2014/03/06 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
Python rstrip()方法实例详解
2018/11/11 Python
python列表list保留顺序去重的实例
2018/12/14 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
python三引号如何输入
2020/07/06 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
2014年幼儿园植树节活动方案
2014/03/02 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python
golang定时器
2022/04/14 Golang