为何TinyMCE PHP服务端处理示例即便前端仅可选图片仍设扩展名校验?
TinyMCE图片上传功能服务端扩展名校验的必要性疑问
在开发图片上传功能时,原本计划在服务端新增非图像文件上传的拦截逻辑,参考官方文档中的TinyMCE PHP服务端处理示例时,看到其中包含如下扩展名校验代码:
// Verify extension if (!in_array(strtolower(pathinfo($temp['name'], PATHINFO_EXTENSION)), array("gif", "jpg", "png"))) { header("HTTP/1.1 400 Invalid extension."); return; }
我也照着这个思路,在自己的服务端JavaScript接口里加了差不多的扩展名校验逻辑,但后续实际测试时发现,这个校验在常规前端使用场景下似乎完全发挥不了作用:
- TinyMCE自带的图片上传弹窗,不管是点浏览选择本地文件,还是直接把文件拖进对话框的场景,前端层面就已经把非图像文件的上传入口给堵死了
- 浏览文件的系统弹窗默认筛选了图像类格式,用户根本选不了其他类型的文件;拖拽上传的流程也有前置判断,非图像文件不会走到上传接口的传输环节
这就带出了一个很实际的开发疑惑:既然前端已经把非图像文件的上传路径全部限制住了,为什么官方的服务端处理示例里,还要专门加入这段扩展名校验的代码?
内容的提问来源于stack exchange,提问作者Doug Lerner
相关产品推荐
相关产品推荐

