Fortify扫描问题:Access Control: Database问题修复
该异常问题我的处理方法是屏蔽该问题,之前也查过很多的文章,但是也不是很明白,今天看了有人也遇到了相关的问题,所以先把自己的处理方式贴出来,大家可以参考一下:
此处的处理方式是屏蔽有问题的sql语句或者redis:(CustomSimpleUtil )
package com.xiaoxin.test.utils;
import java.lang.reflect.Method;
public class CustomSimpleUtil {
public static Object execute(Object obj, String methodName, Object param, Class<?> paramClass) throws Exception {
Method method = obj.getClass().getMethod(methodName, paramClass);
ReflectionUtils.makeAccessible(method);
Object result = method.invoke(obj, param);
return result;
}
public static Object execute(Object obj, String methodName, Object[] params, Class[] paramClasses) throws Exception {
Method method = obj.getClass().getMethod(methodName, paramClasses);
ReflectionUtils.makeAccessible(method);
Object result = method.invoke(obj, params);
return result;
}
}
实际使用位置:
public void add(AdvertCountRecord record) {
// 此处直接调用添加的时候会被扫描到Access Control: Database问题
//advertCountRecordMapper.insertAdvertCountRecord(record);
// 替换为以下方式
try {
CustomSimpleUtil.execute(advertCountRecordMapper,"insertAdvertCountRecord", record, AdvertCountRecord.class);
} catch (Exception e) {
e.printStackTrace();
}
}
多条件设置:(此处redis调用使用的是RedisTemplate,使用redis举例多条件,mysql同理)
public void setRedis(AdvertCountRecord record) {
// 此处直接调用redis设置的时候会被扫描到Access Control: Database问题
String key = "redisKey";
String value = "";
// redisTemplate.opsForValue().set(key, value, 10 * 60L, TimeUnit.MINUTES);
// 替换为以下方式
try {
Object[] obj = new Object[]{key, value, 10 * 60L, TimeUnit.MINUTES};
Class[] clas = new Class[]{Object.class, Object.class, long.class, TimeUnit.class};
CustomSimpleUtil.execute(redisTemplate.opsForValue(), "set", obj, clas);
} catch (Exception e) {
e.printStackTrace();
}
}
redis设置:(此处redis调用使用的是RedisTemplate)
public void getRedisObject() {
// 此处直接调用获取redis数据的时候会被扫描到Access Control: Database问题
String key = "redisKey";
// Object obj = redisTemplate.opsForValue().get(key);
// 替换为以下方式
Object object = null;
try {
object = (Object) CustomSimpleUtil.execute(redisTemplate.opsForValue(), "get", key, Object.class);
} catch (Exception e) {
e.printStackTrace();
}
// 调用object信息
}
仅供参考。。。
更多推荐
Fortify扫描之Access Control: Database 问题修复
发布评论