这篇文章主要介绍“web开发文件上传功能需要注意什么”,在日常操作中,相信很多人在web开发文件上传功能需要注意什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”web开发文件上传功能需要注意什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1. 前言
文件上传在日常开发中十分常见,但是潜在的安全问题非常容易忽视。一旦开发中忽视了这些问题,将会引发系统安全漏洞。
2. 文件上传开发的安全建议
通常我们上传的文件是由客户端控制的,这种情况下就给了不怀好意人可乘之机。一些危险的可执行脚本将有可能被注入服务器中去。因此胖哥总结了以下几点建议。
文件类型过滤
开发者应该有一个过滤清单允许上传的文件类型应仅限于业务功能所需的文件类型,在没有允许列表过滤器的情况下,切勿直接接受文件名及其扩展名,同时前端应该对该清单进行说明。这是一个必要的步骤,大多数开发者也做得很好。
文件名称处理
不能使用原始文件名!这是一个容易被忽略的问题。很多开发者喜欢直接把上传文件的按照原始文件名进行转存。
// Spring boot 开发中不建议使用这个来作为转存的名称,你应该生成一个新的名称来映射此名称 String originalFilename = MultipartFile.getOriginalFilename();
这样是不安全的。虽然大部分//:<>?字符已经被过滤掉,但是. * % $,这些脚本中的常客依然可以被包含在文件名中,所以不能使用原始文件名,你应该指定一个算法来进行重命名,建议使用一种摘要算法来确定文件名。例如,文件名可以是文件名加上日期的 MD5 哈希。
如果业务需要原始文件名的话存储新的命名和原始名称的映射即可。
摘要校验
服务端无论上传、修改还是下载文件都需要进行摘要校验(MD5、SHA256),以防止文件和预设的不一致。客户端有必要的情况下也建议进行摘要校验。
限制大小
这一点如果使用 Spring 进行开发的话已经做了限制,如果该限制不满足业务需要,可以修改,但是不能移除限制,否则会导致拒绝服务攻击。
访问限制
如果不是业务需要,只有身份验证和授权的用户才能使用文件上传功能。不然你的系统就成了别人的免费图床。
行为审计
对于安全我们只能被动防御,因此对文件上传的操作建议有审计日志、而且审计日志不应该受文件系统影响,这样发生安全事件时可以快速定位问题。到此,关于“web开发文件上传功能需要注意什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/222317.html