繁体   English   中英

如何解决在Java代码中创建具有指定名称的文件时的安全漏洞?

[英]How to solve a security break in creating File with a specified name in Java code?

安全码扫描不喜欢以下Java代码:

File localCsvFile = new File(MessageFormat.format(REPORT_ZIP_PATH_FORMAT,
            REPORT_LOCAL_PATH, str1, str2, count));

根据扫描,问题如下:

该软件允许用户输入来控制或影响文件系统操作中使用的路径或文件名。 这可能允许攻击者访问或修改对应用程序至关重要的系统文件或其他文件。

解决这个问题的最佳方法是什么? 我在 Spring Boot Java 应用程序中。 建议的解决方案之一是使用 AccessReferenceMap,它是如何工作的?

OWASP 安全指南中讨论了此问题。 根据应用程序的主机操作系统,解决方案可能略有不同,但这里有一些通用准则 -

  • 如果可能,尽量避免从用户那里获取文件路径。 在不要求用户输入服务器上的路径的情况下评估是否有任何替代解决方案。 我没有你的场景的完整背景,但大多数时候它是可以实现的。 也许您可以根据用户 ID 将报告存储在服务器路径上,例如 user1 文件将存储在 /user/tmp/user1 下,这将消除要求用户输入完整路径或绝对路径的情况。

  • 在服务器端尽可能验证用户输入。 这将尽可能限制用户访问。 例如,如果希望用户访问 pdf,则添加验证以检查用户输入数据以.pdf结尾

  • 切勿将用户输入直接传递给文件系统 API。 在将其发送到文件系统 API 之前,使用预定义的路径为其添加前缀。

  • 确保您的文件系统 API 正在读取/写入受限制的操作系统用户,该用户有权访问您仅存储用户所需文件的特定路径。

您可以在此处阅读有关此漏洞和解决方案的更多信息

暂无
暂无

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

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