频道栏目
首页 > 程序开发 > Web开发 > PHP教程 > PHP安全 > 文件上传漏洞 > 正文
PHP漏洞全解(九)-文件上传漏洞
2016-01-07 14:35:38           
收藏   我要投稿

一套web应用程序,一般都会提供文件上传的功能,方便来访者上传一些文件。

下面是一个简单的文件上传表单

php的配置文件php.ini,其中选项upload_max_filesize指定允许上传的文件大小,默认是2M

$_FILES数组变量

PHP使用变量$_FILES来上传文件,$_FILES是一个数组。如果上传test.txt,那么$_FILES数组的内容为:

$FILES

Array

{

[file]=>Array

{

[name]=>test.txt//文件名称

[type]=>text/plain//MIME类型

[tmp_name]=>/tmp/php5D.tmp//临时文件

[error]=>0//错误信息

[size]=>536//文件大小,单位字节

}

}

如果上传文件按钮的name属性值为file

那么使用$_FILES['file']['name']来获得客户端上传文件名称,不包含路径。使用$_FILES['file']['tmp_name']来获得服务端保存上传文件的临时文件路径

存放上传文件的文件夹

PHP不会直接将上传文件放到网站根目录中,而是保存为一个临时文件,名称就是$_FILES['file']['tmp_name']的值,开发者必须把这个临时文件复制到存放的网站文件夹中。

$_FILES['file']['tmp_name']的值是由PHP设置的,与文件原始名称不一样,开发者必须使用$_FILES['file']['name']来取得上传文件的原始名称。

上传文件时的错误信息

$_FILES['file']['error']变量用来保存上传文件时的错误信息,它的值如下:

错误信息 数值 说明

UPLOAD_ERR_OK 0 没有错误

UPLOAD_ERR_INI_SIZE 1 上传文件的大小超过php.ini的设置

UPLOAD_ERR_FROM_SIZE 2 上传文件的大小超过HTML表单中MAX_FILE_SIZE的值

UPLOAD_ERR_PARTIAL 3 只上传部分的文件

UPLOAD_ERR_NO_FILE 4 没有文件上传

文件上传漏洞

如果提供给网站访问者上传图片的功能,那必须小心访问者上传的实际可能不是图片,而是可以指定的PHP程序。如果存放图片的目录是一个开放的文件夹,则入侵者就可以远程执行上传的PHP文件来进行攻击。

下面是一个简单的文件上传例子:

……

这个例子没有检验文件后缀,可以上传任意文件,很明显的上传漏洞

点击复制链接 与好友分享!回本站首页
相关TAG标签 漏洞 文件
上一篇:第一页
下一篇:Linux安全之PHP木马查杀与防范
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站