public ServerResponse checkAnswer(String username,String question,String answer){
int resultCount = userMapper.checkAnswer(username,question,answer);
if(resultCount>0){
//说明问题及问题答案是这个用户的,并且是正确的
String forgetToken = UUID.randomUUID().toString();
TokenCache.setKey(TokenCache.TOKEN_PREFIX+username,forgetToken);
return ServerResponse.createBySuccess(forgetToken);
}
return ServerResponse.createByErrorMessage("问题的答案错误");
}
这个方法里先要判断user_name, question, answer的组合是否存在,存在才会走到存储token的代码里,那么user_name为空字符串,question, answer还要符合,这种可能几乎没有啊,如何泄密呢?
如果要泄密,首先得存储进去key=token_的cache键值对。
随后调用forgetResetPassword时,还要判断用户名是否存在。
空字符串用户名,注册的时候,就不让注册,这边就没有泄露token_风险了吧?
假设任何人可以拿到token_的值,那么下一步要重设密码时,也只能update那个空字符串的username的密码,也不可能修改其他人的密码吧?
所以我想问,token_的整个泄露token的流程,以及如何做可以带来危害呢?