Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session 如何使用KeyClope Spring安全设置防止会话固定?_Session_Spring Security_Keycloak_Session Fixation - Fatal编程技术网

Session 如何使用KeyClope Spring安全设置防止会话固定?

Session 如何使用KeyClope Spring安全设置防止会话固定?,session,spring-security,keycloak,session-fixation,Session,Spring Security,Keycloak,Session Fixation,我们使用keydove作为身份和访问提供者,通过keydove的spring安全适配器与spring安全性连接。我们意识到,当用户登录应用程序时,会话id不会改变,这是会话固定攻击的大门。KeyClope和spring security都提供了防止会话固定的解决方案,但当我将两者结合使用时,它们都不能正常工作 发件人: 在登录时关闭更改会话id 在某些平台上成功登录时,会话ID将被更改,以插入安全攻击向量。如果要关闭此选项,请将其更改为true。这是可选的。默认值为false 我没有关闭此功能,

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

发件人:

在登录时关闭更改会话id

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

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

Spring security附带了两种
SessionAuthenticationStrategy
ChangeSessionDauthenticationStrategy
SessionFixationProtectionStrategy
,但没有一种能做到这一点

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

  • 按照说明覆盖默认会话管理筛选器
  • 
    [...]
    [...]
    
  • 按指令覆盖默认会话管理筛选器
  • 
    
  • 根据更改默认会话管理筛选器的行为
  • 
    [...]
    [...]
    
    任何关于在KeyClope spring安全环境中防止会话固定的提示都值得赞赏

    <http use-expressions="true" auto-config="false" entry-point-ref="keycloakAuthenticationEntryPoint">
    [...]
         <!-- changeSessionId and newSession have no result at all -->
         <session-management session-fixation-protection="none"/>
         <session-management session-authentication-strategy-ref="sessionAuthenticationStrategy"/>
         <custom-filter ref="sessionManagementFilter" position="SESSION_MANAGEMENT_FILTER"/>
    [...]
    </http>
    <beans:bean id="sessionAuthenticationStrategy"
            class="org.springframework.security.web.authentication.session.ChangeSessionIdAuthenticationStrategy"/>
    <beans:bean id="sessionManagementFilter" class="org.springframework.security.web.session.SessionManagementFilter">
            <beans:constructor-arg name="securityContextRepository" ref="securityContextRepository"/>
            <beans:constructor-arg name="sessionStrategy" ref="sessionAuthenticationStrategy"/>
    </beans:bean>
    
    <http ...>
        <session-management session-authentication-strategy-ref="sessionStrategy"/>
    </http>
    
    <bean id="sessionStrategy" class="org.springframework.security.web.authentication.session.ChangeSessionIdAuthenticationSessionStrategy"/>
    
    <http use-expressions="true" auto-config="false" entry-point-ref="keycloakAuthenticationEntryPoint">
    [...]
         <!-- changeSessionId and newSession have no result at all -->
         <session-management session-fixation-protection="changeSessionId"/>
    [...]
    </http>