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 相关文章推荐
wordpress之wp-settings.php
Aug 17 PHP
php摘要生成函数(无乱码)
Feb 04 PHP
php中大括号作用介绍
Mar 22 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
PHP实现websocket通信的方法示例
Aug 28 PHP
PHP join()函数用法与实例讲解
Mar 11 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
Sep 02 PHP
PHP 代码简洁之道(小结)
Oct 16 PHP
thinkPHP事务操作简单案例分析
Oct 17 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
PHP dirname功能及原理实例解析
Oct 28 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
php设计模式小结
2013/02/15 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
ExtJs之带图片的下拉列表框插件
2010/03/04 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
pygame学习笔记(4):声音控制
2015/04/15 Python
Python 变量类型详解
2018/10/10 Python
python类共享变量操作
2020/09/03 Python
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
单位成立周年感言
2014/01/26 职场文书
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
小小的船教学反思
2014/02/21 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
责任担保书范文
2014/05/21 职场文书
宣传标语大全
2014/07/01 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Python编写nmap扫描工具
2021/07/21 Python
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android