BeanUtils Java 的替代品(错误 SonarQube)

Alternative to BeanUtils Java (error SonarQube)

我目前正在寻找一种将 属性 动态设置到对象中的方法,我有这个:

public static void assign(Object instance, String attribute, Object value) {
    try {
        if (value != null) {
            BeanUtils.setProperty(instance, attribute, value);
        }
    } catch (IllegalAccessException | InvocationTargetException ex) {
        throw new TechnicalException(ex.getMessage(), ex);
    }
}

但是 Sonarqube 给我一个错误:

“确保在这里设置 JavaBean 属性是安全的。”

所以我需要一种替代方法来动态填充我的对象,或者一种避免“BeanUtils.setProperty”中异常的方法(避免异常,因为由于项目的性质,不存在漏洞风险)。

或者通过某种方式接收一个对象,并通过动态转换值的数据类型来分配一个具有特定值的字段。

有什么想法吗?

先谢谢大家了

sonarqube 的消息更像是一个警告,表明您的代码存在潜在的安全问题。当您让用户传递参数时就是这种情况,该参数直接注入此 属性。当这是您的用例时,您需要 validate/clean 用户输入以避免潜在风险。

当您确认这不是风险时,这似乎就是您的情况

because due to the nature of the project there are no risks of vulnerabilities

代码内

您可以使用 SuppressWarnings 注释您的方法,以及要忽略的警告的引用

@java.lang.SuppressWarnings("java:S4512")

sonarqube 内

由于这是一个安全热点,您也可以在 sonarqube 中将其标记为已检查且安全。您可以在您的项目失败的安全热点中执行此操作,并将其标记为 'safe'