群飞开发技术门户

做您身边的学习顾问

注册
热点:

您现在的位置是:主页 > 网站开发 > php >

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

时间:2012-01-16 14:08   来源:未知   收藏  复制分享 点击:

来历:Chinaasp
之所以翻译这篇文章,是因为今朝关于CGI平安性的文章都是拿Perl作为例子,而专门介绍ASP,PHP或者JSP平安性的文章则很少。Shaun Clowes的这篇文章斗劲周全地介绍了PHP的平安问题,原文可以在http://www.securereality.com.au/stu...arlet.txt找到。

因为原文斗劲长,而且有相当一部门是介绍文章的布景或PHP的基本常识,没有涉及到PHP平安方面的内容,是以我没有翻译。如不美观你想体味这方面的常识,请参考原文。

文章首要年夜全局变量,远程文件,文件上载,库文件,Session文件,数据类型和轻易犯错的函数这几个方面剖析了PHP的平安性,而且对若何增强PHP的平安性提出了一些有用的建议。

好了,废话少说,我们言归正传!

[全局变量]
PHP中的变量不需要事先声明,它们会在第一次使用时自动建树,它们的类型也不需要指定,它们会按照上下文情形自动确定。年夜轨范员的角度来看,这无疑是一种极其便利的措置体例。很显然,这也是快速开发说话的一个很有用的特点。一旦一个变量被建树了,就可以在轨范中的任何处所使用。这个特点导致的结不美观就是轨范员很少初始化变量,事实下场,当它们第一次建树时,他们是空的。

很显然,基于PHP的应用轨范的主函数一般都是接管用户的输入(主若是表单变量,上载文件和Cookie等),然后对输入数据进行措置,然后把结不美观返回到客户端浏览器。为了使PHP代码访谒用户的输入尽可能轻易,现实上PHP是把这些输入数据看作全局变量来措置的。

例如:

<FORM METHOD="GET" ACTION="test.php">
<INPUT TYPE="TEXT" NAME="hello">
<INPUT TYPE="SUBMIT">
</FORM>

很显然,这会显示一个文本框和提交按钮。当用户点击提交按钮时,“test.php”会措置用户的输入,当“test.php”运行时,“$hello”会包含用户在文本框输入的数据。年夜这里我们应该看出,抨击袭击者可以按照自己的意愿建树肆意的全局变量。如不美观抨击袭击者不是经由过程表单输入来挪用“test.php”,而是直接在浏览器地址栏输入http://server/test.php?hello=hi&set...?敲矗?恢故恰?/a>$hello”被建树,“$setup”也被建树了。

译者注:这两种体例也就是我们凡是说的“POST”和“GET”体例。
下面的用户认证代码吐露了PHP的全局变量所导致的平安问题:

<?php
if ($pass == "hello")
$auth = 1;
...
if ($auth == 1)
echo "some important information";
?>

膳缦沔的代码首先搜检用户的密码是否为“hello”,如不美观匹配的话,设置“$auth”为“1”,即经由过程认证。之后如不美观“$suth”为“1”的话,就会显示一些主要信息。

概况看起来是正确的,而且我们中有相当一部门人是这样做的,可是这段代码犯了想当然的错误,它假定“$auth”在没有设置值的时辰是空的,却没有想到抨击袭击者可以建树任何全局变量并赋值,经由过程近似“http://server/test.php?auth=1”的方...且丫?现す?摹?/a>

是以,为了提高PHP轨范的平安性,我们不能相信赖何没有明晰界说的变量。如不雅察看序中的变量良多的话,这可是一项很是艰难的使命。

一种常用的呵护体例就是搜检数组HTTP_GET[]或POST_VARS[]中的变量,这依靠于我们的提交体例(GET或POST)。当PHP设置装备摆设为打开“track_vars”选项的话(这是缺省值),用户提交的变量就可以在全局变量和膳缦沔提到的数组中获得。

可是值得声名的是,PHP有四个分歧的数组变量用来措置用户的输入。HTTP_GET_VARS数组用来措置GET体例提交的变量,HTTP_POST_VARS数组用于措置POST体例提交的变量,HTTP_COOKIE_VARS数组用于措置作为cookie头提交的变量,而对于HTTP_POST_FILES数组(斗劲新的PHP才供给),则美全是用户用来提交变量的一种可选体例。用户的一个请求可以很轻易的把变量存在这四个数组中,是以一个平安的PHP轨范应该搜检这四个数组。 (责任编辑:admin)

顶一下
(0)
0%
踩一下
(0)
0%

更多相关资讯

最新评论 进入详细评论页>>
发表评论
已有条跟贴(点击查看)
只允许会员评论,请先 登录注册
自动获取登录的用户名请自觉遵守互联网相关的政策法规,文明发言。