【问题标题】:can we avoid session hijacking using spring security?我们可以避免使用 Spring Security 进行会话劫持吗?
【发布时间】:2020-09-25 10:18:40
【问题描述】:

我们使用 apache tomcat 作为基于 Spring MVC 的 Web 应用程序的服务器。如果用户已经从浏览器登录,比如说 chrome,我们复制了它的 JSESSIONID 并粘贴到另一个浏览器,比如说 Firefox,然后我们就可以访问分配给从 chrome 登录的特定用户的模块。是从 Firefox 登录的。

我们如何通过使用 Spring Security 来防止此类会话劫持?或者一般来说,为了摆脱会话劫持,我们应该编写哪些代码。谢谢!

【问题讨论】:

  • 您是否使用 cookie 进行会话处理或 REST 参数?会话 cookie 不可用于 javascript 操作,因此它们是安全的,而且更改浏览器是可接受的行为。中间人攻击可以绕过所有这些措施,但我们并不关心这里
  • 感谢@NikosM。对于您的回复,实际上JSESSIONID是tomcat生成的用于管理会话的cookie。
  • @FaustoCarvalhoMarquesSilva 谢谢,http-only 和 url appending 我们已经在我们的应用程序中进行了配置。

标签: spring-mvc session cookies spring-security session-hijacking


【解决方案1】:

我认为通过登录会话访问用户的浏览器不属于“会话劫持”。您可以在设置 cookie 时使用 httpOnlysecure 标志来降低风险,因此 JavaScript 无法读取它,并且只会在安全通道 (HTTPS) 上转发​​。走到某人的电脑前,将 cookie 从一个浏览器复制到另一个浏览器是一个完全不同的话题,我认为您无法使用 Spring Security 做太多事情。

【讨论】:

  • 谢谢,克里斯。实际上,我问过安全审计员同样的事情,但他们建议根据 IP 和用户代理跟踪用户,如果与登录的用户不匹配,则限制访问。
  • 是的,我相信这是一种常见的做法,但是没有使用 Spring Security 的特定的、开箱即用的解决方案。
  • @Navnath,据说更改浏览器(例如,直接访问用户浏览器)不算作会话劫持。另外,用户代理和 IP 都可以很容易地被欺骗。安全框架不考虑这些情况。让 cookie 成为 http-ony 并且安全是框架所能做到的。从那时起,您可以实施额外的措施,但据说很多事情都可以被欺骗
  • @NikosM。是的,为了避免这种情况,添加了额外的编码层。
【解决方案2】:

我这样做是为了使其安全且 HttpOnly 并且它有效。 Apache Tomcat中的实现过程: 1) 打开 httpd.conf 文件。在文本编辑器中使用 CTRL + f 找到以下行:

 #LoadModule headers_module modules/mod_headers.so

2) 删除#

3) 在 httpd.conf 中添加以下条目

Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure

4) 重启 Apache HTTP 服务器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2011-05-15
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 2016-04-26
    相关资源
    最近更新 更多