首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
MultipartRequest 能否去掉文件上传添加白名单机制,由业务自己判断
caoyuan1
2024-11-22 10:49
升级5.2.3后,上传我看新增了白名单机制,这个能否去掉,由我们自己业务控制~
项目:
JFinal
1
评论区
布恩迪亚
2024-11-22 11:45
UploadConfig 有增加和删除白名单的方法来着
回复
JFinal
2024-11-22 14:09
白名单、黑单名提供了配置,可以自行控制,删除所有白名单就相当于让位于你业务自己控制
回复
caoyuan1
2024-11-22 14:58
@JFinal
有些上传附件后,文件名是没有后缀的。导致无法判断。
回复
caoyuan1
2024-11-22 14:59
@布恩迪亚
我知道这个,但是还是无法达到我的要求
回复
caoyuan1
2024-11-22 15:03
@JFinal
比如我前端有提供那种js手动对图片进行截取等,操作完成后上传后台是没有后缀的,所以导致我无法用UploadConfig进行白名单控制,再者对原有的项目如果有的没有手动添加白名单,就会导致原有项目更新后出错。
回复
happyboy
2024-11-24 00:44
方案一:先别升级,主打一个够用就行,比如我现在就还再用很古老的版本。方案二:查源代码,自己调整下。^_^
回复
杜福忠
2024-11-24 10:45
方案三:前端使用FormData对象进行上传,
formData.append(name, value, filename)
比如 formData.append('file', blob, 'your_file_name.jpg');
这样就兼容了后端的表单文件上传模式了
回复
caoyuan1
2024-11-24 11:27
@JFinal
看了一下代码,删除所有白名单就无法上传所有文件了,这里应该需要判断下,白名单为空就应该放行。MultipartRequest isSafeFile方法 ,如果whitelist size为0,也应该返回true
回复
caoyuan1
2024-11-24 11:27
@杜福忠
这个确实能解决我的问题,感谢!
回复
JFinal
2024-11-24 12:46
@caoyuan1
是否还需要这个:
if (UploadConfig.whitelist.contains(extName)) {
return true;
}
改为 :
if (UploadConfig.whitelist.contains(extName) || UploadConfig.whitelist.isEmpty()) {
return true;
}
这样全部放行了,安全性就降低了,现在绝大部分对 java 系统的攻击集中在文件上传 + sql 注入
回复
caoyuan1
2024-11-24 19:59
@JFinal
目前我已经改好了,我们也很注重上传这块,也专门有上传检验,作为框架,我觉得这个白名单可以让业务系统自己控制。
回复
zzutligang
2024-11-29 15:56
@JFinal
提到sql注入,有没有好的解决方案?或则jfinal提供一个预防sql注入的功能?最近被sql注入搞的头大。
回复
JFinal
2024-11-29 17:06
@zzutligang
只要你不将参数拼接到 sql 就没问题,这里的参数指:字段名、表名、参数值等等一切拼接成 String sql 语句的部分
回复
杜福忠
2024-11-29 21:37
@zzutligang
有些业务必须用到 前端参数拼接的话,就用 map 做一个静态的全局白名单(表名、字段、条件等等参数均可,包括 sql 片段都可以放)。键值一样才行,用前端参数做 key 取 map 的value 值拼接到 sql 中。 奇安信安全源码扫码可通过,只做 if 判断,扫描器还过不了。要用 value值做拼接的对象就没问题。可过等保
回复
发送
我要分享
热门分享
扫码入社