【发布时间】:2018-05-09 05:52:50
【问题描述】:
在上传过程中如何验证图像真的是“图像”或 PDF 真的是“PDF 文档”?我观察到黑客尝试上传一些带有 jpg 扩展名的文件,该文件有图片预览,但是当我试图在编辑器中打开这个文件时,我看到了 php 代码! .
我担心的是:
如何验证文件是否为真实文件?
我使用的是 laravel 框架,我用图像 mimes 验证进行了测试,如下所示:
$inputs = array('image'=>$request->file('file'));
$rules = array(
'image' => 'mimes:jpeg,jpg,png,gif|required|max:10000'
);
$validator = Validator::make($inputs, $rules);
if ($validator->fails()){
die('validation failed');
}else{
die('validation Passed');
}
但是,如果我尝试使用一些 php 注入代码上传无效的 jpeg 文件,此验证总是会通过!!
【问题讨论】:
-
您可以检查 ->getClientOriginalExtension() 以获取原始扩展名
-
@bipinpatel,但是这个方法只返回已经上传的文件的扩展名
-
@GoatHater 我检查了 getImageSize() 并得到了结果数组: , Array ( [0] => 317 [1] => 40 [2] => 1 [3] => width ="317" height="40" [bits] => 6 [channels] => 3 [mime] => image/gif )。这似乎对“无效文件”有效
标签: php laravel validation