上传问题
setup1、上传文件。
setup2、再次访问上传的文件。
setup3、上传的文件被当成程序解析
例如:如果这个文件是PHP文件那么、在URL访问中把php文件进行执行。那么这种php里面代码有可能执行脚本。
上传漏洞案例
在phpcms中、出现了一起、
在前端经过了验证 、但是在传输的途中被篡改了。在网络层的包替换掉了。也就是后台没有做验证。
上传问题的防御
1、限制上传后缀
利用PHP函数
$info=pathinfo($file);
$info['extension'];
2、文件类型检查
也就是文件类型type、也就是mime 这个是浏览器给的。也不是100%可靠。
3、文件内容的检查
用PHP函数进行查看文件内容或文件类型
$info=finfo_file(finfo_open(),$_FILES['img']['tmp_name']);
var_dump($info);
相对靠谱
4、程序输出
if($_GET['down']){
$file=file_get_contents('./test.php');
header('Content-Type:'text/plain);
die($file);
}
是指程序输出然后直接返回。(但是降低性能)。
5、权限控制-可写可执行互斥
例如上传的执行文件是php、那么我可以把文件夹设置的可写、不可读。或可读不可写。
或上传的服务器是第三方服务器。即可解决。
像PHP的所有组不是root权限。如果被攻破了后。不会销毁服务器。