Is Laravel File Uploading Secure if considered only image

蓝咒 提交于 2019-12-11 05:02:17

问题


Laravel basically have following below functions for input type 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();

If i use getClientOriginalExtension to find correct image extension, getSize to restrict file upload size & getMimeType to check the mimetype of image.

Am i secured ? And can have faith on function that , it will not be exploited by hacker in any way.

Considering a fact, that i will be only uploading image.


Update : Follow below URL for File Uploading Securely with Core PHP :

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

or Just use file validation in rule as per Laravel

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


回答1:


Seems pretty secure to me.

If you only intend to upload images, you can do this:

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

See the image validation rule

If you want to further restrict which extensions are allowed, you can specify an array with the extensions you allow, and then check Input::file('file')->getClientOriginalExtension() against it. Although this can be spoofed, so it's better to specify which mime types are allowed instead.

If you for example only want to allow .png and .gif files, you use:

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

And then check using ->getMimeType()



来源:https://stackoverflow.com/questions/27646204/is-laravel-file-uploading-secure-if-considered-only-image

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!