java.util.Properties.load() 发布 2017 年 OWASP Top 10

java.util.Properties.load() issues OWASP Top 10 2017

我在 java 中有这段代码,用于属性文件,但是当使用 MicroFocus FortiFy OWASP Top 10 2017 执行安全代码扫描时,它在实现方法 java.util.Properties.load() 的行中生成类型为“A1 注入”和“A5 损坏的访问控制”的问题。我找不到这个问题的解决方案。 属性 文件在不同目录中的构建 WAR 之外。

我的代码:

public void initPop() {
    logger.info("Cargar archivo de propiedades en memoria");
    String configProp = "config.properties";
    try {
        Properties prop = new Properties();
        InputStream inputSt = new FileInputStream("/home/ejm/properties/" + configProp);
        prop.load(inputSt);
        Map<String, String> help = new HashMap<String, String>();
        for (Enumeration<?> names = prop.keys(); names.hasMoreElements();) {
            String key = (String) names.nextElement();
            help.put(key, prop.getProperty(key));
        }
        setLstProp(help);
        inputSt.close();
        prop.clear();
    } catch (Exception ex) {
        logger.error("[getValue] Archivo " + configProp + " no encontrado : " + ex.toString());
    }
}

MicroFocus FortiFy OWASP 2017 年 10 强报告:

这个案例显示了一个正确的源代码,并且做了它应该做的事情。

检查表明您的代码可能会或可能不会用于操纵数据或访问部分或您的 software/company,否则将受到限制和禁止。

让我们进入细节。 A1注射液。这只是说您从可以操作的外部文件加载可读数据。例如如果您将访问数据保存在可以读取或更改的 属性 文件中。 属性 文件没有安全措施(如 CRC 或编码)。

A5访问权限。它警告您 - 如果您立即加载和使用数据 - 可能会通过操纵访问或重定向到禁止的系统来感染您的系统(例如,您将 link 保存到通常只能通过某些方式访问的隐藏端口一种登录控制)。

安全起见的关键是“清理您的输入数据”。控制 (a) 值和范围 (b) 数据的可访问性和 links 的每一对(例如,如果允许此用户这样做,则将其与数据库中的条目进行比较)(c)仅存储以下值对于这个工作站来说确实是必需的(例如显示器的大小、快捷方式、选项……)。如果你做了所有这些,你可以看到它是什么 - 一个公平的警告。