php addslashes和mysql_real_escape_string
2015-01-24信息快讯网
本文介绍的是用 mysql_real_escape_string对用户提交数据进行整理处理和通过addslashes以及mysql_escape_string这3个类似的功能函数的区别。经过转义的数据可以直接插入到数据库中。
很好的说明了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设计模式 Strategy(策略模式)
php设计模式 State (状态模式)
php设计模式 Chain Of Responsibility (职责链模式)
session在PHP大型web应用中的使用
php session安全问题分析
php中转义mysql语句的实现代码
php判断输入不超过mysql的varchar字段的长度范围
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
php中session_unset与session_destroy的区别分析
PHP5中新增stdClass 内部保留类
PHP中遍历stdclass object的实现代码
常用的PHP数据库操作方法(MYSQL版)
五款常用mysql slow log分析工具的比较分析
PHP操作mysql函数详解,mysql和php交互函数
php调用mysql数据 dbclass类
flash用php连接数据库的代码
使用PHP提取视频网站页面中的FLASH地址的代码
php cout<<的一点看法
PHPMailer 中文使用说明小结
PHP has encountered an Access Violation 错误的解决方法
PhpMyAdmin中无法导入sql文件的解决办法
phpMyAdmin链接MySql错误 个人解决方案
PHP strtotime函数详解
Php Mssql操作简单封装支持存储过程
Php 构造函数construct的前下划线是双的_
PHP MYSQL乱码问题,使用SET NAMES utf8校正
php操作sqlserver关于时间日期读取的小小见解
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
PHP Session变量不能传送到下一页的解决方法
MYSQL 小技巧 -- LAST_INSERT_ID
php 网页游戏开发入门教程一(webgame+design)
php self,$this,const,static,->的使用
PHP类(Class)入门教程第1/2页
PHP 生成的XML以FLASH获取为乱码终极解决
php addslashes 函数详细分析说明
flash+php+mysql打造简单留言本教程第1/3页