gpt4 book ai didi

java - 如何解决文件名或路径的外部控制 (CWE ID 73)

转载 作者:行者123 更新时间:2023-12-05 04:05:41 25 4
gpt4 key购买 nike

我正在努力修复我的应用程序中的 Veracode 问题。 Veracode 在下面的代码中突出显示了缺陷“文件名或路径的外部控制 (CWE ID 73)”。

Thread.currentThread().getContextClassLoader().getResourceAsStream(lookupName)

如何验证参数?如果我需要使用下面的 ESAPI 验证,那么我应该在 getValidFileName() 方法中传递的确切参数是什么。目前我传递的参数如下。

ESAPI.validator().getValidFileName(lookupName, lookupName,
ESAPI.securityConfiguration().getAllowedFileExtensions(), false);

纠正我是否遵循了正确的方法来解决这个问题。

最佳答案

有几个建议:https://community.veracode.com/s/article/how-do-i-fix-cwe-73-external-control-of-file-name-or-path-in-java

如果这些文件存储在服务器端,您可以使用硬编码值。(即:在 HashMap 中)。

另一种解决方案是使用自定义 validator (来自 veracode 页面):

// GOOD Code
String extension = request.getParameter("extension");
File f = new File(buildValidAvatarPath(extension))

@FilePathCleanser
public String buildValidAvatarPath(extension) {
String[] allowedExtensions = new String[]{"jpg","gif","png"};
String extension = "png"; // Default extension
for (String allowedExtension: allowedExtensions) {
if (allowedExtension.equals(request.getParameter("extension"))) {
extension = request.getParameter("extension");
}
}
// See "Note on authorization"
User user = getCurrentUser();
if (!userMayAccessFile(user, path)) {
throw new AuthorizationException("User may not access this file", user);
}
File(configPath + "avatar." + extension)

return path;
}

关于java - 如何解决文件名或路径的外部控制 (CWE ID 73),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50846446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com