这类漏洞主要是可以读取用户传入路径名称采用不正确的过滤方法导致恶意用户将文件上存到非预期的地方带来安全隐患
其实我们抓住几个地方即可我们先来分析下既然用户要上存文件而且文件将是多种多样格式可能有的文件内容与用户传入格式不一致有的文件内容还夹杂木马代码 那么我们让用户上存文件跟站点文件做一个分别授权做隔离
让保存上存目录独立开来目录权限只读不能执行
这一步从系统设计加以授权无论你上次什么文件都不可能执行到就算我不做任何检测你的文件都上存到这里了也不会对我系统构成安全(如果有用户上存一些反动言语的图片那另外需要处理的)
不直接使用服务器传入值所有都要进行检测
这类跟我们做一切输入都是有害原则一样对于客户端传入的type name 都要进行判断不直接使用对于要生成到某个目录某个文件名
文件名最好方法是自己写死目录(不要读取传入目录)文件名最好自己随机生成不读取用户文件名文件扩展名可以取最右边””后面字符
以上个方法刚好从个方面对上存做了整体约束
方法 保存上存文件名按照自己指定目录写入并且文件名自己生成的
方法只要保证文件写对了位置然后从配置上对写入目录进行权限控制这个是治本可以做到你无论上存什么文件都让你没有权限跳出去可以运行
以 上个方法一起使用可以保证文件正确存到地方然后权限可以控制 这里顺便说明下 判断用户上存文件是否满足要求类型就直接检查文件扩展名只要满足扩展名就让上存 反正做了执行权限限制你不按要求上存内容也无妨 反正不能执行也不会有多大危害性的
正确步骤
读取文件名验证扩展名是不是在范围内
自己定义生成的文件名目录扩展名可以来自文件名扩展名 其它值都自己配置不读取上存中内容
将文件 移到新目录(这个目录权限设置只读)
好了以上是一般操作方法希望对大家有帮助也欢迎朋友们交流!也希望提供更好的方法!接下来我会在web 开发中常见一些方法功能安全设计方面继续写一些我的心得看法!