浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
前端之家收集整理的这篇文章主要介绍了
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞),
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们通过前篇:<浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)>,已经知道后端获取服务器变量,很多来自客户端传入的。跟普通的get,post没有什么不同。下面我们看看,常见出现漏洞代码。
1、检测文件类型,并且用用户上存文件名保存
<div class="codetitle">
<a style="CURSOR: pointer" data="16866" class="copybut" id="copybut16866" onclick="doCopy('code16866')"> 代码如下: <div class="codebody" id="code16866">
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;
}
?>
。 如:$filename 构造为:”a.
$newfile = “upload/a.
a.