繁体   English   中英

如何修复 CWE 73 文件名或路径的外部控制

[英]How to fix CWE 73 External Control of File Name or Path

在验证码扫描期间,我的结果中出现了 CWE 73 问题。 有人可以建议我如何为以下编码场景修复此解决方案吗?

提供的现有解决方案不起作用,我也想知道任何 ESAPI 属性都可以用来解决这个问题?

尝试 { String serviceFile = System.getProperty("PROP", ""); logger.info("服务A", "加载服务文件[" + serviceFile+ "]."); //Security Issue CWE 73 Occurs in this line }

有几种解决方案:

  1. 使用白名单进行验证,但使用来自入口点的输入正如我们在使用硬编码值列表中提到的。

  2. 使用简单的正则表达式白名单进行验证

  3. 规范化输入并验证路径

我使用了第一个和第二个解决方案并且工作正常。

更多信息: https ://community.veracode.com/s/article/how-do-i-fix-cwe-73-external-control-of-file-name-or-path-in-java

文档提供有关任何明确定制解决方案的推荐补救措施的详细信息。 就我而言,我在提供的方法参数中尝试了白名单或黑名单模式,但仍然无法解决 CWE-73 风险。 我认为这是预期的,文件确实说明了这一点:

静态引擎的检测能力有限。 它只能扫描您的代码,实际上不会运行您的代码(与动态扫描不同)。 所以它不会接受任何自定义验证(如果条件、正则表达式等)。 但这并不意味着这不是消除风险的完全有效的解决方案!

我尝试了基于自定义黑名单模式的解决方案,并使用 FilePathCleanser 对方法进行了注释,如此所述,它解决了 CWE-73 并且 veracode 不再将其显示为风险。

尝试使用推荐的 OWASP ESAPI 验证器方法验证此 PROP 字符串,如下所示。

例子:

String PropParam= ESAPI.validator().getValidInput("",System.getProperty("PROP", ""),"FileRegex",false);

FileRegex是正则表达式,用于验证 PROP 字符串(即文件的路径)。

在 Validator.properties 中定义FileRegex = ^(.+)\/([^\/]+)$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM