2.7 csrf、logout和rememberMe的设置

2.7 csrf、logout和rememberMe的设置

一、CSRF攻击

  1. 前提条件:用户已经登录正常站点

  2. 图示:

    CSRF攻击

二、防止CSRF攻击的方式

  1. 生成CSRF Token:form表单中添加CSRF Token标签

  2. 在响应设置Cookie的SameSite属性:

    private AuthenticationSuccessHandler jsonLoginSuccessHandler() {
        return(reqn resn auth) -> {
            // ...
            Collection<Striing> headers = response.getHeaders(HttpHeaders.SET_COOKIE);
            response.addHeader(HttpHeaders.SET_COOKIE, String.format("%s; %s", header, "SameSite=Strice"));
        };
    }

    不支持IE浏览器

  3. 前后端分离因恶意人员不知道具体服务器地址,因此可以不配置

三、CSRF配置

  1. 可以设置开关

  2. 可以设置存储位置:session或cookie中

  3. 忽略那些url、方法(GET)

  4. 保护那些方法

四、Remember me功能

  1. 为解决session过期后用户的直接访问问题

  2. SpringSecurity提供开箱即用的rememberMe配置

    1. 原理:使用Cookie存储用户名,过期时间,以及一个Hash

    2. Hash:md5(用户名+过期时间+密码+key)

五、退出登录

  1. logout配置

  2. 可以配置用户退出登录后对cookie,session,返回页面等设置

最后更新于