安全测评总结

1.跨站点请求伪造
解决方式:在过滤器检测浏览器过来请求的Referer,是否存在改变,如果改变则跳转错误页面
//跨站点请求伪造
String referer = "http://192.168.0.66:8080/szcitymgt";
if(referer != null){
	if(!referer.trim().startsWith(myReferer)){//myReferer是系统的(域名)或者是(ip+端口+项目名)
		httpResponse.setContentType("text/htmll;charset=utf-8");
		httpResponse.setCharacterEncoding("utf-8");
		httpResponse.setStatus(403);
		httpResponse.sendRedirect(httpRequest.getContextPath()+"/500page.jsp");
	}
}
2.使用 HTTP 动词篡改的认证旁路
解决方式:在过滤器检测浏览器过来请求的method类型
String method = httpRequest.getMethod();
if(!"GET".equals(method) && !"POST".equals(method) && !"HEAD".equals(method)){
	httpResponse.setContentType("text/htmll;charset=utf-8");
	httpResponse.setCharacterEncoding("utf-8");
	httpResponse.setStatus(403);
	httpResponse.sendRedirect(httpRequest.getContextPath()+"/500page.jsp");
}
3.非法访问静态地址
解决方式:在过滤器检测浏览器过来的请求是否为静态地址
String uri = httpRequest.getRequestURI();
根据uri的字符串判断是否包含静态地址,如果包含则判断用户是否有登录,没有登录则跳转到登录页面

4.已解密的登录请求
解决方式:登录时使用ssl证书,或者去掉input 中的type="password",但去掉password类型后,密码就会暴露出来了,怎么办?我这里写了一个屏蔽密码的方法,希望能帮到你们。

var tempXing = "";
$("#dolphin").keyup(function(event){
	if(event.keyCode == 9 || event.keyCode == 32 || event.keyCode == 16 || event.keyCode == 18 || event.keyCode == 17 || event.keyCode == 13 || event.keyCode == 20){

	}else if(event.keyCode == 8 || event.keyCode == 46){//8和46是键盘brcksprce,delete键盘
		$(this).val("");
		tempXing = "";
		$("#hiddenPwd").val("");
	}else{
		$("#hiddenPwd").val($("#hiddenPwd").val() + event.key);
		$(this).val(tempXing += "*");
	}
});

5.跨站点脚本编制
解决方式:过滤掉特殊字符

6.登录错误消息凭证枚举
解决方式:密码错误或者账户错误等等错误信息必须使用同一的错误信息提示。

7.会话表示未更新
解决方式:使用过滤器,拦截登录请求,在登录之前,吧旧有的session里的值拿到新的session里这时session的ID就会改变。

你可能感兴趣的:(软件测试)