1.安全性细节
1>HTTP请求报文加密
意义:防止请求报文中敏感信息被拦截。
项目实现细节:将AOP作用充分发挥。
!所有的接口请求报文,通过AESInterceptor来解密。这些拦截器类都实现SpringMVC的HandlerInterceptor接口;
!处理成功的响应报文,使用@ResponseBody响应JSON格式的报文,通过自定义的CustomHttpMessageConveter,加密响应报文。这个类继承MappingJsonHttpMessageConveter。
!异常响应报文,使用AppExceptionIntercepter统一处理。这个拦截器类实现SpringMVC的HandlerExceptionInterceptor接口;
2>用户账户的密码,数据库保存密文
意义:防止数据库被攻破,直接拿到明文密码,造成损失。之前CSDN数据库被攻破过一次,密码是明文保存的,造成了很不好的影响。
3>报文字段合法性校验
意义:虽说APP前端会加上合法性限制,但是想攻击网站的人可以直接通过Chrome或者Jmeter,发起假的请求报文请求,所以后端也需要添加“请求报文必填字段合法性校验”。
项目实现细节:
Java+Hibernate校验java请求vo实体,使用这种方式优势,直接通过注解校验。避免了往常过多的if条件判断。
4>登录接口,连续输错密码次数限制
意义:防止黑客通过登录接口,暴力破解账户密码。
项目实现细节:当用户连续输错3次密码,提示:“密码已经输错3次,连续输错5次,将锁定30分钟”。当用户连续输错5次密码,提示:“密码已经连续输错5次,账户锁定30分钟”。
5>发送短信验证码:同一个手机号,连续两次发送短信验证码最短时间间隔60s
意义:防止黑客,通过同一个手机号短信轰炸。
具体实现细节:比对此次请求时间 和 上次短信验证码的sendTime。
6>发送短信验证码:同一网络来源下(以请求IP地址区分),一天最多发送短信500条
意义:防止黑客,通过1000个、10000个不同的手机号进行短信轰炸。
2.总结
网络安全一直是非常值得关注的话题,我们在JavaWeb开发,尽量使用合适的措施,提高应用的安全性和健壮性。
网友评论