ASP编程 PHP编程 JSP编程 NET编程 CGI编程 XML编程 
Google adsense申请技巧本站核心代理域名注册主机业务 快速发布你的买卖域名买卖网站信息 1元注册 cn域名
站长每日新闻导读 √ ·推荐万网空间¥120元 150m 站长网:站长必上的网站网站联盟大全本站代理万网域名55空间120元
 2007-7-4 12:53:53

如何对PHP程序中的常见漏洞进行攻击

来源: 字体:[ ]

[容易出错的函数]

  我们在分析PHP程序中的漏洞时,如果能够拿到源代码的话,那么一份容易出错的函数列表则是我们非常需要的。如果我们能够远程改变这些函数的参数的话,那么我们就很可能发现其中的漏洞。下面是一份比较详细的容易出错的函数列表:


<PHP代码执行>

require():读取指定文件的内容并且作为PHP代码解释
include():同上
eval():把给定的字符串作为PHP代码执行

preg_replace():当与“/e”开关一起使用时,替换字符串将被解释为PHP代码
<命令执行>
exec():执行指定的命令,返回执行结果的最后一行

passthru():执行指定命令,返回所有结果到客户浏览器
``:执行指定命令,返回所有结果到一个数组
system():同passthru(),但是不处理二进制数据
popen():执行指定的命令,把输入或输出连接到PHP文件描述符
<文件泄露>
fopen():打开文件,并对应一个PHP文件描述符

readfile():读取文件的内容,然后输出到客户浏览器

file():把整个文件内容读到一个数组中



  译者注:其实这份列表还不是很全,比如“mail()”等命令也可能执行命令,所以需要自己补充一下。
  [如何增强PHP的安全性]

  我在上面介绍的所有攻击对于缺省安装的PHP 4都可以很好的实现,但是我已经重复了很多次,PHP的配置非常灵活,通过配置一些PHP选项,我们完全可能抵抗其中的一些攻击。下面我按照实现的难度对一些配置进行了分类:

  *低难度
  **中低难度
  ***中高难度
  ****高难度

  上面的分类只是个人的看法,但是我可以保证,如果你使用了PHP提供的所有选项的话,那么你的PHP将是很安全的,即使是第三方的代码也是如此,因为其中很多功能已经不能使用。
  **** 设置“register_globals”为“off”

  这个选项会禁止PHP为用户输入创建全局变量,也就是说,如果用户提交表单变量“hello”,PHP不会创建“$ hello”,而只会创建“HTTP_GET/POST_VARS['hello']”。这是PHP中一个极其重要的选项,关闭这个选项,会给编程带来很大的不便。

  *** 设置“safe_mode”为“on”


  打开这个选项,会增加如下限制:
  1.限制哪个命令可以被执行
  2.限制哪个函数可以被使用

  3.基于脚本所有权和目标文件所有权的文件访问限制
  4.禁止文件上载功能

  这对于ISP来说是一个伟大的选项,同时它也能极大地改进PHP的安全性。
  ** 设置“open_basedir”

  这个选项可以禁止指定目录之外的文件操作,有效地消除了本地文件或者是远程文件被include()的攻击,但是仍需要注意文件上载和session文件的攻击。
  ** 设置“display_errors”为“off”,设置“log_errors”为“on”

  这个选项禁止把错误信息显示在网页中,而是记录到日志文件中,这可以有效的抵制攻击者对目标脚本中函数的探测。

  * 设置“allow_url_fopen”为“off”
  这个选项可以禁止远程文件功能,极力推荐!


 

 推荐教程
     
网站地图 - 域名注册续费虚拟主机代理 - 交易论坛 - 网站投稿 - 广告服务 - 帮助中心 - 联系我们
Copyright ©2003-2007 www.Admin5.com All Rights Reserved