前端文件上传限制
问题起因
前端限制了文件类型.jpg,.png,.jpeg 发现客户上传了pdf文件。
前端代码
# Ant Design Vue Upload组件
<Upload :fileList="list" :customRequest="uploadFile" :multiple="true" accept=".jpg,.png,.jpeg"
@remove="removeItem" @change="changeFile">
<Button icon="upload">上传附件</Button>
</Upload>
自己一直以来错误的想法
前端允许上传的文件类型可以通过定义accept来限制
实际上
accept 定义的只是绿色箭头标注的地方, 用户依旧可以通过选择红色箭头标选的所有文件,来上传accept定义的文件类型外的文件
问题
想看看大伙儿纯前端限制文件类型是通过哪些方式实现的?
ant 可以在上传之前拦截判断 beforeUpload
永远不要相信来自前端的输入。
对于前端而言,在上传前,得到的 files 属性是个数组,可以遍历过滤掉。
对于前端,可以在上传之前再次校验文件属性,对于后端,可以通过文件头检验文件类型,前端用于优化体验降低错误请求,后端则是最后把关,尤其后端至关重要,楼上说得对,
永远不要相信来自前端的输入。
也不排除 将 pdf 扩展名改成 jpg
不清楚是否准确,懂点代码,但不是前端
前端能做的只是提高伪造门槛,彻底防御还得是后端重绘。