一.什么是横向越权和纵向越权.
1.横向越权:攻击者想访问与他权限相同的用户,例如:在忘记密码回答问题成功后,会跳到重设密码的页面,这个时候如果用户随意填用户名和密码,而且数据库也刚刚好存在这个用户时,那么就会修改其他用户的密码,这就是横向越权
2.纵向越权:低级别攻击者想访问高级别用户的资源。
二.怎么解决
1.横向越权:在回答问题时,成功的时候,会在服务端根据用户名生成一个token(随机数和用户名的映射)保存在本地缓存里,具体如下:
1 //这段代码是在检查回答问题的答案的接口里面的,也就是在回答问题时生成这个token,标志这个用户名
String forgetToken =UUID.randomUUID().toString();2 TokenCache.setKey(TokenCache.TOKEN_PREFIX+username,forgetToken);3 return ServerResponse.creatBySuccess(forgetToken);
这里使用Guaua本地缓存,用来保存token,这个token会定期失效具体代码如下:
public class TokenCache {
//前缀
public static final String TOKEN_PREFIX = "token_";
private static Logger logger= LoggerFactory.getLogger(TokenCache.class);
private static LoadingCache localCache =