【问题标题】:Alternative to BeanUtils Java (error SonarQube)BeanUtils Java 的替代品(错误 SonarQube)
【发布时间】:2021-06-03 05:58:38
【问题描述】:

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

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”中的异常(避免异常,因为由于项目的性质,没有漏洞风险)。

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

有什么想法吗?

非常感谢您。

【问题讨论】:

    标签: java reflection java-8 sonarqube apache-commons-beanutils


    【解决方案1】:

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

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

    由于项目的性质,不存在漏洞风险

    在代码内

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

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

    在声纳内

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

    【讨论】:

    • 哦,谢谢 这正是我所需要的,正如我所说,在这种特定情况下,实施并不代表任何风险,真的非常感谢。
    猜你喜欢
    • 2011-04-25
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多