API 安全机制 | 登录

2020-07-13  本文已影响0人  乌鲁木齐001号程序员

基于 Token 的身份认证

Token 机制.png

基于 Cookie 和 Session 的身份认证

Cookie & Session.png
缺点

Session Fixation 攻击

Session Fixation 攻击.png
防 Session Fixation 攻击的代码
/**
 * request.getSession() 的逻辑:
 * 根据浏览器传来的 sessionId 在内存中找对应的 Session;
 * 如果有现成的 Session,就返回;
 * 如果没有现成的 Session,就创建一个新的返回;
 * @param user
 * @param request
 * @throws IOException
 */
@GetMapping("/login")
public void login(@Validated UserInfo user, HttpServletRequest request) throws IOException {
    UserInfo info = userService.login(user);
    // 试图获取老 Session
    HttpSession session = request.getSession(false);
    if(session != null) {
        // 老 Session 作废
        session.invalidate();
    }
    // 获取一个新 Session,什么时候调了 request.getSession(),什么时候 Session 机制才起作用
    request.getSession(true).setAttribute("user", info);
}

服务端返回的 Cookie 相关信息

上一篇下一篇

猜你喜欢

热点阅读