一、Log Forging(日志伪造)
解决方法:增加敏感字符过滤
/**
* 过滤引起Log Forging漏洞的敏感字符
* @param str
*/
private String filterLogForging(String str){
List<String> sensitiveStr = new ArrayList<>();
sensitiveStr.add("%0d");
sensitiveStr.add("%0a");
sensitiveStr.add("%0A");
sensitiveStr.add("%0D");
sensitiveStr.add("\r");
sensitiveStr.add("\n");
String normalize = Normalizer.normalize(str, Normalizer.Form.NFKC);
Iterator<String> iterator = sensitiveStr.iterator();
while (iterator.hasNext()){
normalize.replace(iterator.next(),"");
}
return normalize;
}
二、Insecure Randomness(不安全随机数)
解决方法:将原本 Random sr = new Random() 换成SecureRandom sr = new SecureRandom()
三、Null Dereference(空指针异常)
解决方法:初始化变量为null后,引入之前增加非空判断
四、Unreleased Resource:Streams(未释放的流资源)
解决方法:当创建流后在finally方法中加入流的关闭操作
if(writer!=null){
writer.close();
}