防止短信狂刷

private void sendMessage(){
// String phone = request.getParameter("phone");
// if(StringUtil.isEmpty(phone)){
// showErrorJson("手机号不能为空");
// return;
// }
//
// Member member = this.memberManager.getMemberByUname(phone);
// if(member==null){
// this.showErrorJson("["+ phone +"],用户不存在!");
// return;
// }
// //获取短信验证码。。未实现
// Random random = new Random();
// StringBuilder sb = new StringBuilder();
//
// for(int i=0;i<6;i++){
// sb.append(random.nextInt(9));
// }
// String code = sb.toString();
// String content = code;
// String r = SMSUtil.postSendMsg(phone, content, "MB-2013102300");
// Map map = new HashMap();
// map.put("mobile",phone );
// map.put("code", code);
// ThreadContextHolder.getSessionContext().setAttribute("message_check_code",map);
// System.out.println(code);
// if(r!=null&&r.indexOf("0")>0){
// showSuccessJson("发送成功");
// }else{
//
// showErrorJson("发送失败");
// }
String phone = request.getParameter("phone");
WebSessionContext sessonContext = ThreadContextHolder.getSessionContext();
Object realCode = sessonContext.getAttribute(ValidCodeServlet.SESSION_VALID_CODE + "findpwd");
String validcode=request.getParameter("validcode");
if(realCode!=null&&validcode!=null)
{
if(!validcode.equals(realCode))
{
System.out.println("验证码错误!");
showErrorJson("验证码错误!");
return;
}
}else {
System.out.println("验证码错误!");
showErrorJson("验证码错误!");
return;
}
//获取短信验证码。。未实现
Random random = new Random();
StringBuilder sb = new StringBuilder();
for(int i=0;i<6;i++){
sb.append(random.nextInt(9));
}
String code = sb.toString();
String content = code;
//-------------------------------------------------------------
//同一个IP请求限制
System.out.println("进入IP"+SMSUtil.getIpAddr(request)+"手机号:"+phone+"-----入口注册!");
Object num=ThreadContextHolder.getSessionContext().getAttribute("IP"+SMSUtil.getIpAddr(request));
System.out.println("num---"+num);
if(num!=null)
{
if(Integer.parseInt(num.toString())>3)
{
System.out.println(SMSUtil.getIpAddr(request)+"IP超过限制");
showErrorJson("已超过限制,请30分钟后再试!");
return;
}else {
ThreadContextHolder.getSessionContext().setAttribute("IP"+SMSUtil.getIpAddr(request),Integer.parseInt(num.toString())+1);
}
}else {
ThreadContextHolder.getSessionContext().setAttribute("IP"+SMSUtil.getIpAddr(request),"1");
}
Object req=ThreadContextHolder.getSessionContext().getAttribute("req");
System.out.println("req---"+req);
if(req!=null)
{
if(Integer.parseInt(req.toString())>3)
{
System.out.println(SMSUtil.getIpAddr(request)+"IP超过限制");
showErrorJson("请求超过限制,请30分钟后再试!");
return;
}else {
ThreadContextHolder.getSessionContext().setAttribute("req",Integer.parseInt(req.toString())+1);
}
}else {
ThreadContextHolder.getSessionContext().setAttribute("req","1");
}
//时间间隔
//System.out.println("时间间隔");
Object time=ThreadContextHolder.getSessionContext().getAttribute("time");
System.out.println("time---"+time);
if(time!=null)
{
long cj=System.currentTimeMillis()-Long.parseLong(time.toString());
if(cj/1000<60)
{
System.out.println(SMSUtil.getIpAddr(request)+"时间间隔超过限制");
showErrorJson("请1分钟后再试!");
return;
}else {
ThreadContextHolder.getSessionContext().setAttribute("time",System.currentTimeMillis());
}
}else {
ThreadContextHolder.getSessionContext().setAttribute("time",System.currentTimeMillis());
}

//同一个号码请求限制
//System.out.println("同一个IP请求限制");
Object mobile=ThreadContextHolder.getSessionContext().getAttribute("mobile");
System.out.println("mobile---"+mobile);
if(mobile!=null)
{
if(Integer.parseInt(mobile.toString())>3)
{
System.out.println(SMSUtil.getIpAddr(request)+"号码超过限制");
showErrorJson("您号码已超过限制,请30分钟后再试!");
return;
}else {
ThreadContextHolder.getSessionContext().setAttribute("mobile",Integer.parseInt(mobile.toString())+1);
}
}else {
ThreadContextHolder.getSessionContext().setAttribute("mobile","1");
}
//----------------------------------------------------------


String r = SMSUtil.postSendMsg(phone, content, "JSM40505-0003");
Map map = new HashMap();
map.put("mobile",phone );
map.put("code", code);
ThreadContextHolder.getSessionContext().setAttribute("message_check_code",map);
System.out.println(code);
if(r!=null&&r.indexOf("<status>0</status>")>0){
showSuccessJson("发送成功");
}else{

showErrorJson("发送失败");
}


}

原文地址:https://www.cnblogs.com/chenweida/p/6145797.html