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";