是Laravel文件上传的安全,如果仅考虑图像(Is Laravel File Uploading

2019-10-21 12:06发布

Laravel基本上具有下列下面功能input类型file

// Determine if a file was uploaded
 Input::hasFile('filename');
// Access file properties
 Input::file('name')->getRealPath();
Input::file('name')->getClientOriginalName();
Input::file('name')->getClientOriginalExtension();
Input::file('name')->getSize();
Input::file('name')->getMimeType();

如果我使用getClientOriginalExtension找到正确的图像扩展getSize限制上传文件大小和getMimeType检查图像的MIME类型。

我是安全吗? 并可能对,它会不会被黑客以任何方式利用功能的信心。

考虑到一个事实,那我将只上传图片。


更新:请按照以下网址文件,PHP核心安全上载:

http://php.w3clan.com/tutorial/47/form-handling-secure-uploading

或者只是使用文件验证的规则按Laravel

$rule = [ 'name' => 'image' ];

Answer 1:

似乎是相当安全的给我。

如果你只打算上传图片,你可以这样做:

$rules [
    ...
    'file' => 'required|image' // Assuming it's required, otherwise leave that out
]

见图像验证规则

如果您想进一步限制其扩展名是允许的,你可以指定你允许扩展阵列,然后检查Input::file('file')->getClientOriginalExtension()反对。 虽然这可能是虚假的,所以最好到指定的MIME类型,而不是允许的。

比如你只想让巴纽和.gif文件,您可以使用:

$allowedMimes = [
    'image/gif',
    'image/png'
];

然后检查使用->getMimeType()



文章来源: Is Laravel File Uploading Secure if considered only image