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
检查图像的mimetype。
我安全吗?并且对功能有信心,它不会被黑客以任何方式利用。
考虑到一个事实,我只会上传图像。
<小时 />更新:按照以下URL使用Core PHP安全地上传文件:
http://php.w3clan.com/tutorial/47/form-handling-secure-uploading
或仅根据Laravel在规则中使用文件验证
$rule = [ 'name' => 'image' ];
对我来说
似乎很安全。
如果您只打算上传图像,则可以执行以下操作:
$rules [
...
'file' => 'required|image' // Assuming it's required, otherwise leave that out
]
请参阅映像验证规则
如果要进一步限制允许的扩展,可以指定一个包含允许的扩展的数组,然后根据它检查Input::file('file')->getClientOriginalExtension()
。尽管这可能是欺骗性的,因此最好指定允许哪些 MIME 类型。
例如,如果您只想允许.png和.gif文件,则可以使用:
$allowedMimes = [
'image/gif',
'image/png'
];
然后使用->getMimeType()
进行检查