- 浏览: 483451 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (335)
- VM (2)
- python 基础 (78)
- C (7)
- php (38)
- django (8)
- c++ (1)
- python 服务端编程 (21)
- ubuntu (1)
- linux (26)
- mysql (24)
- 缓存管理 (5)
- nginx (4)
- linux 命令行 (16)
- web (8)
- javascript (8)
- python 模块 (3)
- java (6)
- 面试题 (2)
- tornado (1)
- 运维 (10)
- 网络编程 (0)
- svn (5)
- css (1)
- mongodb (3)
- vim (8)
- infobright (1)
- shell (1)
- 算法 (2)
- redis (1)
最新评论
原文地址:
http://blog.unvs.cn/archives/magic_quotes_gpc-mysql_real_escape_string-addslashes.html
本篇文章,主要先重点说明 magic_quotes_gpc、mysql_real_escape_string、addslashes 三个函数方法的含义、用法,并举例说明。然后阐述下三者间的区别、关系。
一、magic_quotes_gpc含义介绍
这个函数,只有在页面传递 $_GET,$_POST,$_COOKIE 时才会发生作用,主动进行调用,在web客户端执行。对传递的字符串是否进行转义处理。
用法: magic_quotes_gpc=on/off; (当为on时,主动对字符串进行转义处理,即添加转义斜线=单引号转换为\’,若为off,则不进行转义处理)一般默认为off。
举例:
if(!magic_quotes_gpc()){
$name = addslashes($_POST['name']);
}else{
$name = $_POST['name'];
}//这个是对 magic_quotes_gpc 定义的判断,若为off,就要通过 magic_quotes_gpc 进行转义处理,否则不做处理。
二、mysql_real_escape_string含义介绍
这个函数,作用和 magic_quotes_gpc 差不多,同样是对字符串进行转义处理,是在入数据库前的处理,特别是对于多字符节处理时,安全性高于下面要说的addslashes。可有效防止对数据库的攻击。
用法: mysql_real_escape_string(string,connection) ,string为转义字符串,connection为数据库连接字符串--可选。
举例:
<?php
function check_input($value)
{
// 若设置为on,则需要反转义
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// 判断是否为纯数字
if (!is_numeric($value))
{
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}
$con = mysql_connect("localhost", "unvs", "123456");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
// 检查字符串,存入数据库
$user = check_input($_POST['user']);
$pwd = check_input($_POST['pwd']);
$sql = "SELECT * FROM users WHERE
user=$user AND password=$pwd";
mysql_query($sql);
mysql_close($con);
?>
三、addslashes含义介绍
在第一个举例中,我们用到了 addslashes 函数,作用同样为对GET、POST、COOKIE过来的字符串进行转义处理,通常与 magic_quotes_gpc 结合使用,。
用法:此函数是对字符串进行强行转义,另同magic_quotes_gpc。
举例:见第一点。
下面讲述下三者之间的区别、关系:
1、addslashes 与 mysql_real_escape_string,同样的作用是经过转义后,可直接插入数据库, 国内很多PHP coder是使用addslashes函数防止SQL注入,但是其实,最好的还是建议大家使用后者来转义数据。
举例说明:addslashes的问题在于黑客可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会被看作是单引号,所以addslashes无法成功拦截。
两者何时用:addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string更加安全。
2、magic_quotes_gpc的说明,在首次客户端运行时,可用第一条的举例,对 magic_quotes_gpc 进行 $_['name'] 判断,可转义处理。
3、 mysql_real_escape_string和mysql_escape_string这2个函数的区别:
mysql_real_escape_string 必须在(PHP 5以上、PHP 4 >= 4.3.0)版本的情况下才能使用。否则只能用 mysql_escape_string 。
两者的区别是:mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。
4、实际开发中,正确的逻辑处理,如下:
首先,检查 magic_quotes_gpc 是否配置为自动转义斜线,若为on,应该调用stripslashes去掉$_REQUEST、$_GET,$_POST、$_COOKIE的转义斜线;
然后,查询/写入/更新数据至mysql时,再使用mysql_real_escape_string进行字符转义。
好了,就总结这么多,相信大家对于这三个函数都有了一定的了解,并在实际开发中,知道对于程序安全的逻辑处理。以后还有补充再添上。
部分内容参考、搜集整理于以下文章:
addslashes和mysql_real_escape_string: http://www.phpq.net/tutorial/addslashes-mysql_real_escape_string.html
PHP中magic_quotes_gpc的正确处理方式: http://blog.csdn.net/lyjtynet/article/details/6261169
另附一篇有关 magic_quotes_gpc详细使用方法 的文章: http://developer.51cto.com/art/200911/165392.htm
本博文章基本上属于原创或收集整理,都是心血结晶。
欢迎转载分享,转载请注明出处,谢谢!
本文地址:http://blog.unvs.cn/archives/magic_quotes_gpc-mysql_real_escape_string-addslashes.html
http://blog.unvs.cn/archives/magic_quotes_gpc-mysql_real_escape_string-addslashes.html
本篇文章,主要先重点说明 magic_quotes_gpc、mysql_real_escape_string、addslashes 三个函数方法的含义、用法,并举例说明。然后阐述下三者间的区别、关系。
一、magic_quotes_gpc含义介绍
这个函数,只有在页面传递 $_GET,$_POST,$_COOKIE 时才会发生作用,主动进行调用,在web客户端执行。对传递的字符串是否进行转义处理。
用法: magic_quotes_gpc=on/off; (当为on时,主动对字符串进行转义处理,即添加转义斜线=单引号转换为\’,若为off,则不进行转义处理)一般默认为off。
举例:
if(!magic_quotes_gpc()){
$name = addslashes($_POST['name']);
}else{
$name = $_POST['name'];
}//这个是对 magic_quotes_gpc 定义的判断,若为off,就要通过 magic_quotes_gpc 进行转义处理,否则不做处理。
二、mysql_real_escape_string含义介绍
这个函数,作用和 magic_quotes_gpc 差不多,同样是对字符串进行转义处理,是在入数据库前的处理,特别是对于多字符节处理时,安全性高于下面要说的addslashes。可有效防止对数据库的攻击。
用法: mysql_real_escape_string(string,connection) ,string为转义字符串,connection为数据库连接字符串--可选。
举例:
<?php
function check_input($value)
{
// 若设置为on,则需要反转义
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// 判断是否为纯数字
if (!is_numeric($value))
{
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}
$con = mysql_connect("localhost", "unvs", "123456");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
// 检查字符串,存入数据库
$user = check_input($_POST['user']);
$pwd = check_input($_POST['pwd']);
$sql = "SELECT * FROM users WHERE
user=$user AND password=$pwd";
mysql_query($sql);
mysql_close($con);
?>
三、addslashes含义介绍
在第一个举例中,我们用到了 addslashes 函数,作用同样为对GET、POST、COOKIE过来的字符串进行转义处理,通常与 magic_quotes_gpc 结合使用,。
用法:此函数是对字符串进行强行转义,另同magic_quotes_gpc。
举例:见第一点。
下面讲述下三者之间的区别、关系:
1、addslashes 与 mysql_real_escape_string,同样的作用是经过转义后,可直接插入数据库, 国内很多PHP coder是使用addslashes函数防止SQL注入,但是其实,最好的还是建议大家使用后者来转义数据。
举例说明:addslashes的问题在于黑客可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会被看作是单引号,所以addslashes无法成功拦截。
两者何时用:addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string更加安全。
2、magic_quotes_gpc的说明,在首次客户端运行时,可用第一条的举例,对 magic_quotes_gpc 进行 $_['name'] 判断,可转义处理。
3、 mysql_real_escape_string和mysql_escape_string这2个函数的区别:
mysql_real_escape_string 必须在(PHP 5以上、PHP 4 >= 4.3.0)版本的情况下才能使用。否则只能用 mysql_escape_string 。
两者的区别是:mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。
4、实际开发中,正确的逻辑处理,如下:
首先,检查 magic_quotes_gpc 是否配置为自动转义斜线,若为on,应该调用stripslashes去掉$_REQUEST、$_GET,$_POST、$_COOKIE的转义斜线;
然后,查询/写入/更新数据至mysql时,再使用mysql_real_escape_string进行字符转义。
好了,就总结这么多,相信大家对于这三个函数都有了一定的了解,并在实际开发中,知道对于程序安全的逻辑处理。以后还有补充再添上。
部分内容参考、搜集整理于以下文章:
addslashes和mysql_real_escape_string: http://www.phpq.net/tutorial/addslashes-mysql_real_escape_string.html
PHP中magic_quotes_gpc的正确处理方式: http://blog.csdn.net/lyjtynet/article/details/6261169
另附一篇有关 magic_quotes_gpc详细使用方法 的文章: http://developer.51cto.com/art/200911/165392.htm
本博文章基本上属于原创或收集整理,都是心血结晶。
欢迎转载分享,转载请注明出处,谢谢!
本文地址:http://blog.unvs.cn/archives/magic_quotes_gpc-mysql_real_escape_string-addslashes.html
发表评论
-
修改 phpStorm 7.1.3 字体大小
2014-11-08 14:56 579原文地址: http://blog.csdn.net/wi ... -
UNIX时间戳换算问题
2014-02-20 09:35 893转:http://chenyudengyuqiong-163 ... -
【转】yii框架,命令行应用程序设计
2014-02-12 18:27 760首先,当您接触yii框架时,您会发现,它已经精心设计好了一套命 ... -
php http_build_query
2014-02-12 09:45 801这函数方便,不用自己去拼接了 http_build_que ... -
stream_context_create作用
2014-02-12 09:42 786转 http://huangliangfeixu.blo ... -
php 的 private public protected
2014-01-09 20:14 1198public 表示全局,类内部外部子类都可以访问; pr ... -
CDbConnection failed to open the DB connection: could not find driver
2014-01-02 16:11 1044wamp5 看看是否安装了php_pdo_mysql扩展 ... -
【转】浅谈页面静态化、缓存技术与SEO
2013-12-25 11:17 1304原文地址: 浅谈页面静态化、缓存技术与SEO http ... -
php 路由机制
2013-12-02 17:52 773【转】 http://3haku.net/2012/07/04 ... -
php 跨域问题
2013-11-21 17:36 434header('P3P:CP="IDC DSP C ... -
Forbidden You don't have permission to access
2013-11-19 11:58 1142Forbidden You don't have permi ... -
【转】深入浅出之Smarty模板引擎工作机制(二)
2013-10-13 19:18 680http://www.cnblogs.com/hongfei/ ... -
【转】深入浅出之Smarty模板引擎工作机制 一
2013-10-13 19:12 691http://www.cnblogs.com/hongfei/ ... -
【转 php 优化】Squid是什么,Squid工作原理是什么
2013-11-06 17:43 767http://wuhaoshu.blog.51cto.co ... -
【转】PHP加速插件eAccelerator和Zend Optimizer是什
2013-12-18 09:02 902eaccelerator是一个开放源码的php应用程序加速 ... -
【转 php优化 】三款免费的PHP加速器:APC、eAccelerator、XCache比较
2013-10-12 17:08 761http://www.vpser.net/opt/apc- ... -
php中heredoc的使用方法
2013-10-12 16:31 623Heredoc技术,在正规的PH ... -
PHP负载均衡指南
2013-10-11 17:55 745原文地址: http://www.yeeyan.org/art ... -
【转】PHP心得(收藏,慢慢看)
2013-09-08 18:39 790转:http://my.oschina.net/liu ... -
PHP配置指令作用域说明(PHP_INI_PERDIR、PHP_INI_SYSTEM、PHP_INI_USER、PHP_INI_ALL)
2013-08-27 10:15 826PHP总共有4个配置指令作用域:(PHP中的每个指令都有自己 ...
相关推荐
get_magic_quotes_gpc函数是一个用来判断是否为用户提供的数据增加斜线了,这个在php.ini配置文件中哦,下面我来介绍一下get_magic_quotes_gpc()函数说明. get_magic_quotes_gpc函数介绍 取得 PHP 环境变数 magic_...
get_magic_quget_magic_quotes函数详解oget_magic_quotes函数详解get_magic_quoget_magic_quotes函数详解get_magic_quotes函数详解get_magic_quotes函数详解get_magic_quotes函数详解tes函数详解get_magic_quotes...
本篇文章小编为大家介绍,基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍。需要的朋友参考下
本篇文章是对PHP中magic_quotes_gpc的使用方法进行了详细的分析介绍,需要的朋友参考下
php $magic_quotes_gpc = get_magic_quotes_gpc(); @extract(daddslashes($_COOKIE)); @extract(daddslashes($_POST)); @extract(daddslashes($_GET)); if(!$magic_quotes_gpc) { $_FILES = daddslashes($_FILES); }...
PHP魔术引号实现在PHP 5.4更高版本上为旧版代码实现magic_quotes_gpc 如果您要将旧版源代码迁移到上述PHP 5.4版的环境中,但是根据Magic Quotes magic_quotes_gpc SQL保护,其中包括许多易受攻击的数据库查询代码。...
本文实例分析了PHP中addslashes与mysql_escape_string的区别。分享给大家供大家参考,具体如下: 1.在插入数据时两者的意义基本一样.区别只在于addslashes 在magic_quotes_sybase=on时将“ ‘”转换成“ ‘ ‘” 在...
对一般人来说看下前两段就可以了 Magic Quotes 代码: Magic Quotes is a process that automagically escapes incoming data to the PHP script. It’s preferred to code with magic quotes off and to instead ...
把函数: set_magic_quotes_runtime($new_setting); 替换成: ini_set(“magic_quotes_runtime”, $new_setting);
特地查看了下手册,关于php magic quotes,常见的几个设置如下,magic_quotes_gpc,magic_quotes_sybase,magic_quote_runtime,这几个函数是在php.ini中去配置的,从手册中可以看出从php5.3后已经废除了这些特性,...
主要介绍了php中magic_quotes_gpc对unserialize的影响,以实例的形式分析了magic_quotes_gpc安全过滤对unserialize造成的影响以及对此的解决方法,非常具有实用价值,需要的朋友可以参考下
php中数据的魔法引用函数 magic_quotes_gpc 或 magic_quotes_runtime 设置为on时,为我们引用的数据碰到 单引号’ 和 双引号” 以及 反斜线\ 时自动加上反斜线,帮我们自动转译符号,确保数据操作的正确运行两者...
1)提交变量进数据库时,我们必须使用addslashes()进行过滤,像我们的注入问题,一个addslashes()也就搞定了。其实在涉及到变量取值时,intval()函数对字符串的过滤也是个不错的选择。 2)在php.ini中开启magic_...
复制代码 代码如下: <? function my_addslashes...MAGIC_QUOTES_GPC || $force) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = my_addslashes($val, $force); } } else { $string