美文网首页
API 安全机制 | 登录

API 安全机制 | 登录

作者: 乌鲁木齐001号程序员 | 来源:发表于2020-07-13 08:44 被阅读0次

    基于 Token 的身份认证

    Token 机制.png

    基于 Cookie 和 Session 的身份认证

    Cookie & Session.png
    缺点
    • 只能针对浏览器,手机 APP,第三方服务调的话,这套机制就没用了;
    • 服务器向浏览器传递 sessionId 的时候,不是绝对安全的,容易被劫持;
    • 如果后端的 Servlet 容器有多台,那么 Session 信息无法在多台 Servlet 容器之间共享;

    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 相关信息

    • Domain:比如其值是 baidu.com,那么访问 baidu.com 的请求才会带上 Cookie;访问 baidu.com 的二级域名也会带上 Cookie;
    • Path:比如其值是 /,那么请求的 Path 是 / 或 / 的子路径时才会带上 Cookie;
    • Secure:表示请求必须是 HTTPS,才会带上 Cookie;
    • HttpOnly:当前这个请求不能被 javascript 脚本来读,只能被浏览器自身发送;

    相关文章

      网友评论

          本文标题:API 安全机制 | 登录

          本文链接:https://www.haomeiwen.com/subject/hajncktx.html