- 浏览: 496667 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (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 617原文地址: http://blog.csdn.net/wi ... -
UNIX时间戳换算问题
2014-02-20 09:35 935转:http://chenyudengyuqiong-163 ... -
【转】yii框架,命令行应用程序设计
2014-02-12 18:27 793首先,当您接触yii框架时,您会发现,它已经精心设计好了一套命 ... -
php http_build_query
2014-02-12 09:45 840这函数方便,不用自己去拼接了 http_build_que ... -
stream_context_create作用
2014-02-12 09:42 822转 http://huangliangfeixu.blo ... -
php 的 private public protected
2014-01-09 20:14 1231public 表示全局,类内部外部子类都可以访问; pr ... -
CDbConnection failed to open the DB connection: could not find driver
2014-01-02 16:11 1097wamp5 看看是否安装了php_pdo_mysql扩展 ... -
【转】浅谈页面静态化、缓存技术与SEO
2013-12-25 11:17 1334原文地址: 浅谈页面静态化、缓存技术与SEO http ... -
php 路由机制
2013-12-02 17:52 809【转】 http://3haku.net/2012/07/04 ... -
php 跨域问题
2013-11-21 17:36 472header('P3P:CP="IDC DSP C ... -
Forbidden You don't have permission to access
2013-11-19 11:58 1191Forbidden You don't have permi ... -
【转】深入浅出之Smarty模板引擎工作机制(二)
2013-10-13 19:18 710http://www.cnblogs.com/hongfei/ ... -
【转】深入浅出之Smarty模板引擎工作机制 一
2013-10-13 19:12 736http://www.cnblogs.com/hongfei/ ... -
【转 php 优化】Squid是什么,Squid工作原理是什么
2013-11-06 17:43 814http://wuhaoshu.blog.51cto.co ... -
【转】PHP加速插件eAccelerator和Zend Optimizer是什
2013-12-18 09:02 939eaccelerator是一个开放源码的php应用程序加速 ... -
【转 php优化 】三款免费的PHP加速器:APC、eAccelerator、XCache比较
2013-10-12 17:08 804http://www.vpser.net/opt/apc- ... -
php中heredoc的使用方法
2013-10-12 16:31 659Heredoc技术,在正规的PH ... -
PHP负载均衡指南
2013-10-11 17:55 775原文地址: http://www.yeeyan.org/art ... -
【转】PHP心得(收藏,慢慢看)
2013-09-08 18:39 823转:http://my.oschina.net/liu ... -
PHP配置指令作用域说明(PHP_INI_PERDIR、PHP_INI_SYSTEM、PHP_INI_USER、PHP_INI_ALL)
2013-08-27 10:15 851PHP总共有4个配置指令作用域:(PHP中的每个指令都有自己 ...
相关推荐
然后,如果不是数字类型的数据,使用`mysql_real_escape_string()`进行SQL转义。需要注意的是,这段代码使用了已废弃的`mysql_`系列函数,实际应用中应使用`mysqli_`或`PDO`。 总结一下关于`magic_quotes_gpc`和`...
为了增强安全性,推荐使用`mysql_real_escape_string()`,并始终检查`get_magic_quotes_gpc()`的设置,以确保对用户输入进行充分的转义。同时,随着技术的发展,应考虑使用预处理语句(如PDO或mysqli的预处理功能)...
在讨论mysql_real_escape_string()和addslashes()之前,了解get_magic_quotes_gpc()和get_magic_quotes_runtime()两个函数同样重要。这两个函数用于检查PHP配置文件php.ini中是否开启了magic_quotes_gpc和magic_...
其次,`addslashes()`函数与`mysql_real_escape_string()`类似,也是为特殊字符添加反斜杠。但当`magic_quotes_gpc`配置项开启时,所有GET、POST和COOKIE数据会被自动转义,此时再使用`addslashes()`会导致双重转义...
总的来说,了解 `addslashes()` 和 `stripslashes()` 的使用场景和配合 `magic_quotes_gpc` 的工作方式,以及它们与SQL注入防护的关系,是编写安全的PHP代码所必需的。在实际开发中,应始终关注数据的安全处理,以...
即使`get_magic_quotes_gpc`设置为开启,也应该使用`mysql_real_escape_string`或预处理语句来处理用户输入,以提供额外的安全层。 总结来说,`addslashes`适用于简单场景且只处理单字节字符集,`mysql_real_escape...
return mysql_real_escape_string($str, $this->_linkID); } else { return mysql_escape_string($str); } } ``` 通过这种方法,无论数据之前是否被转义,都可以确保在入库前正确转义,同时避免了二次转义的...
包括(‘), (“), (), (NUL)四个字符,此函数在DBMS没有自己的转义函数时候使用,但是如果DBMS有自己的转义函数,那么推荐使用原装函数,比如MySQL有mysql_real_escape_string函数用来转义SQL。 注意在PHP5.3之前,...
在处理用户输入时,推荐使用PHP内置的函数如mysql_real_escape_string()(针对MySQL)或PDO和mysqli预处理语句来处理数据库查询中的特殊字符。对于HTML输出,可以使用htmlentities()或htmlspecialchars()函数进行...
在上述代码中,首先检查魔术引号是否开启,然后使用`mysqli_real_escape_string()`对用户输入进行安全处理,这通常是连接到MySQL数据库时防止SQL注入的最佳做法。 总之,`addslashes()`和`stripslashes()`是PHP中...
例如,如果你正在存储用户输入的数据到数据库,可能需要先使用`addslashes`,然后在插入之前使用`mysql_real_escape_string`。而在输出数据到HTML页面时,`htmlspecialchars`是首选,以防止XSS攻击。理解并正确使用...
- 若`get_magic_quotes_gpc`为`0`,则需要手动使用`addslashes`对POST数据进行转义,之后再使用`mysql_real_escape_string`进行二次转义,最后插入数据库。 2. **处理特殊字符**:对于无法正常录入的特殊字符,...
例如,对于来自表单的数据,可以使用`htmlspecialchars()`来防止XSS攻击,而对于数据库查询语句,应使用预处理语句或者`mysql_real_escape_string()`函数进行安全处理。同时,开发者应避免直接在数据库查询中使用...
- **转义特殊字符**:通过使用`addslashes()`、`mysql_escape_string()`或`mysql_real_escape_string()`等函数来转义用户输入中的特殊字符。 - **参数化查询**:使用预编译语句来避免SQL注入的风险,这是一种更为...