php.ini中magic_quote_gpc功能on理解
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-23 14:04:30 浏览: 评论:0
开启magic_quote_gpc=on之后,能实现addslshes()和stripslashes()这两个函数的功能。在PHP4.0及以上的版本中,该选项默认情况下是开启的,所以在PHP4.0及以上的版本中,就算PHP程序中的参数没有进行过滤,PHP系统也会对每一个通过GET、POST、COOKIE方式传递的变量自动转换,换句话说,输入的注入攻击代码将会全部被转换,将给攻击者带来非常大的困难。
虽然如此,攻击者仍然有机会进行SQL注入攻击,前提是,当参数为数字型的时候,且未经过Intval()函数的处理,因为经过intval()的处理之后,所有的数据就都会强制转换成数字。
前面已经提到过,开启magic_quote_gpc=on之后,相当于使用addslshes()这个函数,但是数字型没有用到单引号,所以理所当然的绕过了addslshes()函数的转换了,而使用MySQL自带的char()函数或者HEX(),char()可以将参数解释为整数并且返回这些整数的ASCII码字符组成的字符串,使用十六进制表示必须在数字前加上0x。
实例演示:假设我们知道管理员的用户名为admin,密码不知道。并且已经将magic_quote_gpc启用。
SQL语句如下:
$sql="select * from users where username=$name and password='$pwd'";
注意:变量$name没加引号,此时,在地址栏中输入username=admin%23,则合成后的sql语句为如下:
select * from users where username='admin' #' and password='';
这时候通过url地址栏输入的单引号(’)将被加上反斜线,该sql语句将失效,admin转换成ASCII后是char(97,100,109,105,110),此时在地址栏中输入如下代码:
username=char(97,100,109,105,110)%23
SQL语句就变成了如下代码:
select * from users where username=char(97,100,109,105,110)#' and password='';
执行结果为真,就可以顺利进入后台,对于数字型注入攻击,必须在任何的数字型参数放入数据库之前使用intval()对参数进行强制转换成数字,从而可以断绝数字型注入漏洞的产生,比如如下代码:
$id=intval($_GET[‘id’]);select * from articles where id=’$id’;
地址栏中输入如下代码:
id=5’ or 1=1%23
SQL语句将变成如下:select * from articles where id=’5’;而不是select * from articles where id=’5’ or 1=1#;
总结:对于每一个变量都记得加上单引号,比如where username=’$name’,开启magic_quote_gpc并不是绝对安全的,对于数字型注入攻击,仅仅使用addslashes()函数进行转换是不够的,还需使用intval()强制将参数转换成数字.
Tags: magic_quote_gpc php ini功能
- 上一篇:php外部发送大量数据包解决方法
- 下一篇:php中一些安全性防止问题建议
相关文章
- ·PHP 是什么?(2013-11-12)
- ·Php.ini文件位置在哪里 Php.ini文件找不到(2013-11-12)
- ·PHP 数据类型(2013-11-12)
- ·php 获取当前脚本的url(2013-11-12)
- ·php技术生成静态页面的实现(2013-11-13)
- ·缺陷月项目启动 披露PHP脚本语言漏洞(2013-11-13)
- ·在PHP中全面阻止SQL注入式攻击(2013-11-13)
- ·php生成随机密码的几种方法(2013-11-13)
- ·PHP中使用FCKeditor2.3.2配置(2013-11-13)
- ·如何使用PHP开发高效的WEB系统(2013-11-13)
- ·php:树形结构的算法(2013-11-13)
- ·php4和php5区别(2013-11-13)
- ·php数据库连接(2013-11-13)
- ·如何正确理解PHP的错误信息(2013-11-13)
- ·php页面漏洞分析及相关问题解决(2013-11-13)
- ·当在连接PHP时,抱怨一些数值没有定义参考?(2013-11-27)

推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)