Java 覆盖性中的字符串构造问题

Java 覆盖性中的字符串构造问题,java,Java,我正在处理一个封面问题。在我的代码中 props = StandardUtils.getProperties(="/Dir/tomcat/properties/lib/standardlib_" + cust_id + ".properties, inst_Id); This vulnerability is found by my coverity server and showing the message "CID 127299 (#1 of 1): Fi

我正在处理一个封面问题。在我的代码中

    props =  
    StandardUtils.getProperties(="/Dir/tomcat/properties/lib/standardlib_" + 
    cust_id + ".properties, inst_Id);

This vulnerability is found by my coverity server and showing the message

"CID 127299 (#1 of 1): Filesystem path, filename, or URI manipulation 
(路径操作) 4.接收器:使用受污染的值构造路径或URI /Dir/tomcat/properties/lib/standardlib_“+ cust_id+”。属性,inst_id。这可能允许攻击者访问, 修改或测试关键或敏感文件的存在”

然后我再次将这个字符串赋给一个字符串变量,并进行了coverity扫描,但是 显示相同的错误消息“”

但问题仍然存在

coverity建议“路径操纵漏洞可以通过 正确的输入验证。将允许不安全路径的字符列入黑名单 遍历可以提高输入的安全性,但推荐的方法是 是将所需字符集列入白名单。这应该排除绝对值 路径和向上目录遍历。”

这些类型的问题在我的代码中多处报告

我们如何解决这些类型的问题?有人能帮我吗?

您应该仔细阅读,但基本上,您的代码仍然容易受到攻击,但可能不是路径遍历攻击,特别是可能受到攻击

如果
cust\u id
看起来像这样会怎么样:

String cust_id = request.getParameter("cust_id");
我提供了一个url

http://your_server.com:8080/?cust_id=123
那么这个,

String loc = "/Dir/tomcat/properties/lib/standardlib_" + 
        cust_id + ".properties";
也会扩大:

String loc = "/Dir/tomcat/properties/lib/standardlib_123.properties";
因此,假设不同的客户有不同的日志文件,就有可能为其他人查看该文件

要解决此问题,您需要验证客户id,或者以某种方式检查其访问权限

一旦解决了问题,您就可以安全地将其标记为假阳性

String loc = "/Dir/tomcat/properties/lib/standardlib_123.properties";