java安全漏洞_安全漏洞之Java
1.跨站脚本攻击
(1)Cross-Site Scripting(XSS):Reflected:jsp取值漏洞,使⽤c:out转义
var params_rf = "";
var params_rf = "";
Cross-Site Scripting: Persistent、Cross-Site Scripting: DOM
2.File Disclosure:使⽤的是由未经验证的输⼊创建的路径
过滤路径中的特殊字符,或者路径不让⽤户输⼊,在配置⽂件中配置相关路径
3.Unreleased Resource: Streams
资源未释放,⼀般在try中创建资源,finally中释放资源
4.Double-Checked Locking
5、Log Forging:
最直接的⽅法就是删除漏洞的⽇志打印,但删除后,项⽬上线⼀旦出现故障,就⽆法通过查⽇志定位问题所在,所以这个⽅法可⾏但后期维护不⽅便;另外⼀个⽅法就是封装⼀个打印⽇志的公共类,但这种⽅法也只是能够降低漏洞数量,⽆法解决这个漏洞;最号就是要过滤掉⾮法字符:
public static String validLog(String log) {
List list = new ArrayList();
list.add("%0d");
list.add("\r");
list.add("%0a");
list.add("\n");
String encode = alize(log, Normalizer.Form.NFKC);
for (int i = 0; i < list.size(); i++) {
encode = (i), "");
}
return encode;
}
6、System Information Leak:External 系统信息泄漏
情况:
PrintWriter out = Writer(); try {
java replace方法
...
} catch (Exception e) { out.Message()); } }
解决:
编写错误消息时,始终要牢记安全性。尽量⾃⼰编写错误信息,不要直接把系统错误回显到客户端。
7、Open Redirect
8、Race Condition: Singleton Member Field 将成员变量修改成局部变量
9、Path Manipulation
加⼊以下验证(尚未校验)
HashMap map = new HashMap();
map.put("a", "a");
map.put("b", "b");
map.put("c", "c");
map.put("d", "d");
map.put("e", "e");
map.put("f", "f");
map.put("g", "g");
map.put("h", "h");
map.put("i", "i");
map.put("j", "j");
map.put("k", "k");
map.put("l", "l");
map.put("m", "m");
map.put("n", "n");
map.put("o", "o");
map.put("p", "p");
map.put("q", "q");
map.put("r", "r");
map.put("s", "s");
map.put("t", "t");
map.put("u", "u");
map.put("v", "v");
map.put("w", "w");
map.put("x", "x");
map.put("y", "y");
map.put("z", "z");
map.put("A", "A");
map.put("B", "B");
map.put("C", "C");
map.put("D", "D");
map.put("E", "E");
map.put("F", "F");
map.put("G", "G");
map.put("H", "H");
map.put("I", "I");
map.put("J", "J");
map.put("K", "K");
map.put("L", "L");
map.put("M", "M");
map.put("N", "N");
map.put("O", "O");
map.put("P", "P");
map.put("Q", "Q");
map.put("R", "R");
map.put("S", "S");
map.put("T", "T");
map.put("U", "U");
map.put("V", "V");
map.put("W", "W");
map.put("X", "X");
map.put("Y", "Y");
map.put("Z", "Z");
map.put(":", ":");
map.put("/", "/");
map.put("\\", "\\");
String temp = "";
for (int i = 0; i < path.length(); i++) { if ((path.charAt(i)+"")!=null) { temp += (path.charAt(i)+""); }
}
path = temp;
File proFile = new File(path);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。