怎么防御会话固定攻击

参考答案

防御会话固定攻击的方法

这个问题的根源在 sessionid 不变,如果用户在未登录时拿到的是一个 sessionid,登录之后服务端给用户重新换一个 sessionid,就可以防止会话固定攻击了。

如果使用了 Spring Security ,那么就不用担心这个问题,因为Spring Security 中默认已经做了防御工作。

Spring Security 中的防御主要体现在三个方面:

  1. StrictHttpFirewall,请求地址中有 ; 请求会被直接拒绝。
  2. 响应的 Set-Cookie 字段中有 HttpOnly 属性,这种方式避免了通过 XSS 攻击来获取 Cookie 中的会话信息进而达成会话固定攻击。
  3. 让 sessionid 变一下,既然问题是由于 sessionid 不变导致的,那就让 sessionid 变一下。

 

具体配置如下:

怎么防御会话固定攻击

可见,这里有四个选项:

  1. migrateSession 表示在登录成功之后,创建一个新的会话,然后讲旧的 session 中的信息复制到新的 session 中,默认即此。
  2. none 表示不做任何事情,继续使用旧的 session。
  3. changeSessionId 表示 session 不变,但是会修改 sessionid,这实际上用到了 Servlet 容器提供的防御会话固定攻击。
  4. newSession 表示登录后创建一个新的 session。

默认的 migrateSession ,在用户匿名访问的时候是一个 sessionid,当用户成功登录之后,又是另外一个 sessionid,这样就可以有效避免会话固定攻击。

这三种方案,都可以有效避免会话固定攻击。

 

以上,是 网络安全面试题【怎么防御会话固定攻击】的参考答案。

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧