SpringBoot项目代码在测试那报出硬编码敏感数据的安全隐患,主要是文件服务器的连接敏感信息和路径的地址,先总结以下非静态的和静态的属性获取application.yml配置的数据
1、首先在application.yml中配置需要的敏感数据
//#上传文件到文件服务器
fileServer:
userName: r***
passWord: 1*****
hostName: 172.**.**.**
port: 2*
path: /h**/**/***/a***/w***/d***
header: http://外网访问ip/docunmet/
//#读取文件路径
readFile:
localAddrPrev: D://***//
localAddrNext: //
serverAddrPrev: /u**/j***/f****/
serverAddrNext: /
2、配置Util类(主要是为静态属性获取配置的数据)
public class PropertyUtil {
@Autowired
private Environment env;
//ftp服务器ip地址
public static String FTP_ADDRESS;
//端口号
public static int FTP_PORT;
//用户名
public static String FTP_USERNAME ;
//密码
public static String FTP_PASSWORD;
@PostConstruct
public void readConfig() {
FTP_ADDRESS = env.getProperty("fileServer.hostName");
FTP_PORT = Integer.parseInt(env.getProperty("fileServer.port"));
FTP_USERNAME = env.getProperty("fileServer.userName");
FTP_PASSWORD = env.getProperty("fileServer.passWord");
}
}
在这里插入代码片
3、非静态属性获取配置application的数据值
@Service
public class UploadServeImpl implements UploadService {
@Value("${readFile.localAddrPrev}")
private String localAddrPrev;
@Value("${readFile.localAddrNext}")
private String localAddrNext;
...
}
4、静态属性获取配置application的数据值
public class UploadUtil {//jsch包支持ssh连接到服务器
//ftp服务器ip地址
//@Value("${fileServer.hostName}")
private static String FTP_ADDRESS = PropertyUtil.FTP_ADDRESS;
//端口号
//@Value("${fileServer.port}")
private static int FTP_PORT = PropertyUtil.FTP_PORT;
//用户名
//@Value("${fileServer.userName}")
private static String FTP_USERNAME =PropertyUtil.FTP_USERNAME;
//密码
//@Value("${fileServer.passWord}")
private static String FTP_PASSWORD =PropertyUtil.FTP_PASSWORD;
...
}
总结:普通属性获取application中的数据用@Value即可;对于static修饰的属性通过PropertyUtil类从Environment获取配置的数据。