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调用三种数据库的方法(2)
Oct 09 PHP
社区(php&&mysql)五
Oct 09 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
php语言流程控制中的主动与被动
Nov 05 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
自己写的php中文截取函数mb_strlen和mb_substr
Feb 09 PHP
php微信公众平台开发类实例
Apr 01 PHP
PHP对XML内容进行修改和删除实例代码
Oct 26 PHP
几行代码轻松实现PHP文件打包下载zip
Mar 01 PHP
PHP检测接口Traversable用法详解
Dec 29 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
一文搞懂php的垃圾回收机制
Jun 18 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
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
jQuery+Ajax实现无刷新操作
2016/01/04 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
node网页分段渲染详解
2016/09/05 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
python多线程http下载实现示例
2013/12/30 Python
获取Django项目的全部url方法详解
2017/10/26 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
省优秀教师事迹材料
2014/01/30 职场文书
2014新年元旦活动策划方案
2014/02/18 职场文书
土建施工员岗位职责
2014/07/16 职场文书
保险公司增员口号
2015/12/25 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python
python获取字符串中的email
2022/03/31 Python