首页 > 后端开发 > php教程 > 浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)_php技巧

浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)_php技巧

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-05-17 08:57:54
原创
973 人浏览过

我们通过前篇:浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)>,已经知道后端获取服务器变量,很多来自客户端传入的。跟普通的get,post没有什么不同。下面我们看看,常见出现漏洞代码。
1、检测文件类型,并且用用户上存文件名保存

复制代码 代码如下:

if(isset($_FILES['img']))
{
    $file = save_file($_FILES['img']);
 if($file===false) exit('上存失败!');

 echo "上存成功!",$file;
}
function check_file($img)
{
 ///读取文件
 if($img['error']>0) return false;

 $tmpfile = $img['tmp_name'];
 $filename = $img['name'];

 
 ///读取文件扩展名
 $len=strrpos($filename,".");
 if($len===false) return false;

 //得到扩展名
 $ext = strtolower(substr($filename,$len+1));
 if(!in_array($ext,array('jpg','jpeg','png'))) return false;
 return true;
}
function save_file($img)
{
 if(!check_file($img)) return false;

 //格式检测ok,准备移动数据
 $filename = $img['name'];
 $newfile = "upload/" .$filename;
 if(!move_uploaded_file($img["tmp_name"],$newfile)) return false;

 return $newfile;
}
?>

以上代码,对输入类型也做了判断,看了没有问题。但是问题,确恰恰出现在对获取的用户名变量检测上面。直接获取传入用户名,然后存为文件。 有朋友会说:这些文件名都是我电脑里面存在的,文件名格式都受限于操作系统对文件名定义。 但是,需要注意是,对于$_FILES里面获取变量,是直接来自http request请求。它跟普通获取其它get,post变量一样。 因此,别有用心的人,往往会自己模拟浏览器,给服务器发送一个特殊文件名。然后,让存文件时候,能够正常保存为自己格式。

前些年,”
相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
javascript - xss漏洞问题
来自于 1970-01-01 08:00:00
0
0
0
程序漏洞
来自于 1970-01-01 08:00:00
0
0
0
php漏洞在不升级PHP版本的情况下怎么修复
来自于 1970-01-01 08:00:00
0
0
0
javascript - js内存泄漏问题
来自于 1970-01-01 08:00:00
0
0
0
PHP 安全漏洞如何安装啊
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板