一、路径遍历
路径遍历是指应用程序接收了未经合理校验的用户参数用于进行与文件读取查看相关操作,而该参数包含了特殊的字符(例如“..”和“/”),使用了这类特殊字符可以摆脱受保护的限制,越权访问一些受保护的文件、目录或者覆盖敏感数据。本文以JAVA 语言源代码为例,分析路径遍历缺陷及该缺陷产生的原因及修复方法。
二、缺陷代码
172行因为localFile因为接收参数后未对参数做合理校验,可能会收到../file.text,假定文件路径有效,则可能导致读取了 uploads 父目录下的 file.text 文件。
三、代码修复
我使用了2种方法可以来解决路径遍历问题,一是全局过滤,二是单个字符串过滤
全局过滤代码如下:
private String fileNameValidate(String str) {
String fileNameListStr ="../|./|/.."; //这里为请求体中不能携带的关键字
if(null!=fileNameListStr && !"".equals(fileNameListStr))
{
str = str.toLowerCase();// 统一转为小写
log.info("sqlFilter===========================>>路径遍历过滤规则: