我目前正在寻找一种将属性动态设置为对象的方法,我有以下内容:
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“中避免异常的方法(避免异常,因为由于项目的性质,不存在漏洞的风险)。
或者以某种方式接收对象,并通过动态转换值的数据类型来分配具有特定值的字段。
有什么想法吗?
事先非常感谢。
发布于 2021-03-04 09:01:18
sonarqube的信息更多的是警告您的代码存在潜在的安全问题。当您让用户传递一个参数时,情况就是这样,该参数直接注入到该属性中。当这是您的使用程序时,您需要验证/清除用户输入,以避免潜在的风险。
当你确认这不是一个风险,而且这似乎是你的情况
,因为由于项目的性质,不存在漏洞的风险
在代码中
可以用SuppressWarnings注释您的方法,以及要忽略的警告的引用。
@java.lang.SuppressWarnings("java:S4512")
声纳
由于这是一个安全热点,您也可以在声纳中标记这是检查和安全的。您可以在项目失败的安全热点中执行此操作,并将其标记为“安全”。
https://stackoverflow.com/questions/66477551
复制相似问题