问题标签 [session-fixation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
536 浏览

vaadin - vaadin 中每个请求的 csrf 令牌

我是 vaadin 的新手,我想实现 csrf 令牌保护,我发现 vaadin 已经在请求中注入 csrf 令牌,但问题是 csrf 令牌在每个请求中都是相同的,它们在 vaadin 中是否有任何配置来生成新的每个请求中的令牌?或者他们有什么方法可以在创建新会话时强制 vaadin 重新生成 csrf 令牌?

我使用以下代码解决了会话固定漏洞,但问题是 csrf 令牌与之前的会话令牌保持不变;因为 reinitializeSession 方法使用新的 jsessionID 创建了一个具有相同内容的新会话

0 投票
1 回答
1982 浏览

asp.net - 修复 ASP.Net 中的 Session Fixation 缺陷

使用 .Net Framework 4.7 的混合 webforms/mvc asp.net 应用程序在 Veracode 动态扫描中被标记为“会话固定”漏洞。这意味着 Veracode 获取登录页面,更改 SessionId cookie (ASP.NET_SessionId),然后使用有效的用户 ID 和密码发布以进行登录。ASP.Net 登录用户,但获取此更改的 SessionId cookie 并继续使用它;使用注入的 SessionId 值的行为是缺陷。

换句话说,当 Veracode 获取页面时,SessionId cookie 可能是“abc123”。Veracode 将该 cookie 更改为“def456”并回发。ASP.Net 登录用户并从此使用“def456”作为 SessionId。

根据 Veracode,我必须使成功登录之前创建的 ASP.Net_SessionID cookie 无效。当然这很容易做到,我可以在用户成功登录时简单地重置 ASP.NET_SessionId cookie。问题是,这会导致用户被重定向回登录页面。所以会发生这样的事情:

  1. 用户提交登录页面。
  2. 在服务器端,如果登录成功,我将 ASP.NET_SessionId 重置为某个新值(通过调用 SessionIDManager.SaveSessionID(),这反过来又简单地重置了 ASP.Net_SessionID cookie)。
  3. 用户被重定向到应用程序主页,然后立即重定向回登录页面

该应用程序使用表单身份验证和 webforms 登录页面。登录页面使用 asp.net Login 控件。在这个控件的“OnAuthenticate”事件中,我有这样的代码:

这运行没有错误。ASP.net 将用户重定向到应用程序主页。但随后 asp.net 立即将用户从应用程序主页重定向回登录页面。

有什么方法可以更改 SessionId cookie,以便

  1. Veracode 注入的 SessionId cookie 值被放弃。
  2. 用户保持身份验证,而不是简单地重定向回登录页面。

我尝试运行在各种页面事件(PreInit、Load 等)中更改 SessionId 的代码,并且所有这些事件都具有相同的结果——用户被重定向回登录页面。

请不要将此问题标记为已回答。关于这个问题有几个答案,所有这些都建议像我上面所做的那样重新设置 SessionId cookie,并且所有这些都有评论指出这实际上不起作用。

0 投票
0 回答
127 浏览

php - 防止会话劫持、固定、注入等

我正在创建一个登录系统,我已经阅读了很多关于防止会话劫持、固定和注入攻击等所需的安全措施。我绝对不是安全专家——我在帮助下拼凑了很多来自本网站和其他各种帖子。这两个 Stack Overflow 帖子特别有帮助:Link Link 2

在阅读了这些之后,我最终对我的系统进行了很多更改和改进,但我不确定我是否受到了所有保护。以下是我到目前为止的想法。我怀疑有些是对的,有些是错的,有些可能是多余的。这是发生的基本流程:

1)我是否遗漏了任何东西或看起来有什么问题?

2)我不确定我是否在一个好地方使用 session_regenerate_id() 。我知道它需要定期调用,所以我认为每次调用受保护的页面都会很好。

3) #4 中的所有 ini_set 仅出现在 login 函数中的 session_start() 之前。但是,使用 page_protect() 保护的每个页面的顶部都有一个 session_start()。是否应该在每个页面上都使用相同的 ini_set,或者在初始登录期间设置它们之后,它们保持设置状态?

4)我应该删除这条线吗?ini_set('session.cookie_lifetime', 1200); 这将要求用户在 20 分钟后再次登录。我认为在 20 分钟不活动后注销用户会很好,但在站点周围移动 20 分钟后就不行了。

5) 在 page_protect 中,当我检查 ip 和用户代理哈希时,我应该使用 && 而不是 || 吗?如果这两个条件都满足,那么肯定有问题。

任何帮助是极大的赞赏。

0 投票
0 回答
505 浏览

asp.net - ASP.NET 中的会话修复漏洞

嗨,我在我的 ASP.NET 应用程序中收到以下行的会话修复漏洞。

自从我在大多数地方使用 Session["SomeConstant"] 来存储价值,同时从一个页面移动到另一个页面以来,这个问题得到了 100 多个地方。

如何解决这个问题?是否可以在 Global.asax 文件中实现

0 投票
1 回答
116 浏览

java - Vert.x Web 和会话固定

使用 Vert.x Web 处理程序是否可以修复会话固定问题(即在用户通过身份验证后更改会话 ID),还是我必须实现自己的会话处理?在登录处理期间我需要一个会话,但我看不到如何使用身份验证令牌创建一个新会话(或更改会话 ID)。

0 投票
0 回答
782 浏览

session - 如何使用 Keycloak Spring Security 设置防止会话固定?

我们使用 keycloak 作为我们的身份和访问提供者,通过 keycloak 的 spring security 适配器与 spring security 连接。我们意识到,当用户登录应用程序时,会话 ID 不会改变,这为会话固定攻击打开了大门。keycloak 和 spring security 都提供了防止会话固定的解决方案,但是当我将两者结合使用时,它们都不能正常工作。

keycloak的文档中

登录时关闭更改会话 ID

默认情况下,会话 ID 在某些平台上成功登录时会更改,以插入安全攻击向量。如果要关闭此功能,请将其更改为 true 这是可选的。默认值为假。

我没有关闭此功能,但登录过程后会话 ID 仍然保持不变。

Spring 安全性伴随着 , 和 的两个实现SessionAuthenticationStrategyChangeSessionIdAuthenticationStrategySessionFixationProtectionStrategy它们都不能解决问题。

keycloak doku中,您可以找到SessionFixationProtectionStrategy当前不支持”的提示,但没有建议如何处理此设置中的会话固定风险。但是根据这个提示,应该仍然可以使用 spring security 更改会话 id,结果是“通用注销将不再起作用”。但即使这样我也没有开始工作(也许我们可以进行权衡并失去通用注销)我尝试在某些方面使用spring security更改会话ID(提取配置文件):

  1. 按照此说明覆盖默认会话管理过滤器
  1. 通过此指令覆盖默认会话管理过滤器
  1. 根据spring 的文档更改默认会话管理过滤器的行为

任何有关在 keycloak spring 安全环境中防止会话固定的提示都值得赞赏。

0 投票
1 回答
49 浏览

asp.net - 多页 Web 应用程序的会话固定问题

我们的 Web 应用程序有多个页面,并且没有任何注销功能。我们尝试了 onunload 方法,但它在 Chrome 浏览器中不起作用。我们尝试了 onbeforeunload 方法,但它也被调用以进行页面重定向。当用户关闭多页 Web 应用程序的选项卡时,有没有办法结束会话?

0 投票
0 回答
56 浏览

spring-boot - 为 Spring Security 原始扩展启用 sessionManagement.sessionFixation

我的团队有一个 Spring Boot Web 应用程序。我们最近在我们公司向客户提供的服务中添加了 SAML 支持。我们基于 spring-security-saml 1.0.6 扩展开发了一个解决方案。

我们的一位客户进行了审查,发现浏览器 sessionId 在成功登录后没有改变。这是主要弹簧安全代码默认打开的功能,并通过 sessionManagement.sessionFixation 选项进行配置。

我已经尝试在我们的 SAML 配置中添加对它的引用,尝试了所有可能的配置选项,但它似乎根本没有任何效果。这是配置 HttpSecurity 对象的 WebSecurityConfigurationAdapter 代码的部分配置:

我看过一篇文章提到需要手动配置 SAML 提供程序以使用为核心 spring 安全性定义的某些对象,但它没有专门处理 sessionFixation 配置。

在用户名/密码登录期间,我可以在日志文件中看到会话 ID 切换,其中 spring 安全模块设置为跟踪:

我不确定过滤器链是否被过早终止,或者 sessionFixation 过滤器是否从未在 SAML 端配置过。有谁知道我怎样才能让它工作?

0 投票
2 回答
264 浏览

servlets - HttpSession 无效正在重定向到登录页面

您好我正在使用 servlet 过滤器来更改每个请求的会话 ID,以避免会话固定。我的问题是当方法 doFilter 结束时,应用程序被重定向到登录页面。我只想使新会话无效并创建新会话,而不需要重定向。我没有其他过滤器。

有我的 doFilter 代码:

过滤器上的图案是***.xhtml**

为什么我会重定向到登录?

可以更改过滤器上的会话 ID 吗?

谢谢

0 投票
0 回答
31 浏览

spring-security - 为什么我的 Spring http 会话会在几秒钟内被破坏?

在我的 spring-security 应用程序中,我经常遇到会话破坏问题。这是我的会话生命周期堆栈跟踪。

从日志看来,它可能与Spring-security SessionFixationProtectionEvent.

是什么导致了这个错误?如果有人对此有任何线索,请指导我。