问题描述
我在通过 checkmarx 分析代码时遇到了路径遍历漏洞。我正在使用以下代码获取路径:
String path = System.getenv(variableName);
和 "path" 变量值遍历多个函数,最后在一个函数中使用,代码片段如下:
File file = new File(path);
Checkmarx 将其标记为中等严重性漏洞。
请帮忙。 如何解决它以使其与 checkmarx 兼容?
解决方法
您可以通过调用 File.getCanonicalPath()
生成规范化路径。
就你而言:
String path = System.getenv(variableName);
path = new File(path).getCanonicalPath();
欲了解更多信息,请阅读Java Doc
,我相信 Checkmarx 会接受的其他答案包括 Path.normalize:
import java.nio.file.*;
String path = System.getenv(variableName);
Path p = Paths.get(path);
Path normalizedPath = p.normalize();
path = new File(normalizedPath.toString());
或 FilenameUtils.normalize 方法:
import org.apache.commons.io.FilenameUtils;
String path = System.getenv(variableName);
path = new File(FilenameUtils.normalize(path));