我正在处理源代码中的一些覆盖问题。我在这里使用 代码如,
filePath = properties.getProperty("DO.LIB.LOC");
String fileName = (String) request.getParameter("read");
filePath += "/" + fileName;
downloadResultSet.flushFile(filePath, response,
fileName.substring(fileName.lastIndexOf(".") + 1));
在我的coveiry扫描工具中发现了一个错误,如“CID 38762(#1 of 2): 文件系统路径,文件名或URI操作(PATH_MANIPULATION) 2. sink:使用污染值filePath构造路径或URI。这可能允许攻击者访问,修改或测试存在 关键或敏感文件。该值使用不安全 字节码,无法显示。“
在外部属性文件和文件名中定义的文件路径来自 要求。
我在不同的java文件中使用相同的代码进行文件上传,删除 ,下载功能。我怎样才能避免这些漏洞 从我的代码。任何人都可以帮助我吗?
答案 0 :(得分:0)
您应该使用Path类型而不是String (https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Path.html)
它看起来像这样:
Path path = Paths.get(properties.getProperty("DO.LIB.LOC"));
path = path.resolve(Paths.get(request.getParameter("read")));