Spring HttpOnly标志能否阻止会话固定攻击?

Spring HttpOnly标志能否阻止会话固定攻击?,spring,security,spring-security,session-cookies,session-fixation,Spring,Security,Spring Security,Session Cookies,Session Fixation,我需要在登录后保留会话id。我的会话id cookie标记为HttpOnly。这样的设置是绝对安全的吗?如果我的会话cookie是HttpOnly,攻击者是否有可能执行会话固定攻击 最好将会话cookie设置为HttpOnly,因为它显然使会话更加安全 避免会话固定漏洞的正确方法是在身份验证时为用户创建新会话 查看有关的OWASP文章。它提供了有关执行此类攻击的技术的信息。最好将会话cookie设置为HttpOnly,因为它显然使会话更加安全 避免会话固定漏洞的正确方法是在身份验证时为用户创建新

我需要在登录后保留会话id。我的会话id cookie标记为HttpOnly。这样的设置是绝对安全的吗?如果我的会话cookie是HttpOnly,攻击者是否有可能执行会话固定攻击

最好将会话cookie设置为
HttpOnly
,因为它显然使会话更加安全

避免会话固定漏洞的正确方法是在身份验证时为用户创建新会话


查看有关的OWASP文章。它提供了有关执行此类攻击的技术的信息。

最好将会话cookie设置为
HttpOnly
,因为它显然使会话更加安全

避免会话固定漏洞的正确方法是在身份验证时为用户创建新会话


查看有关的OWASP文章。它提供了有关执行此类攻击的技术的信息。

TLDR:是的,在PHP和Firefox中,可以添加第二个会话cookie,由于标头中的顺序,该cookie优先于原始cookie。 如果有其他功能允许在服务器上设置会话ID,也可以。这取决于特定于应用程序的功能

完整解释

取决于您的网站上有哪些其他功能来操作会话。在少数情况下,应用程序允许用户通过HTTP请求设置会话。例如,通过GET参数

我相信您想知道,如果原始会话ID设置在带有HttpOnly标志的cookie中,是否可以修复会话ID。因此,我在一个PHP应用程序上做了一个小测试,我正在进行pentest。令人惊讶的是,您可以通过作为XSS注入的JavaScript设置新的PHPSESSID。如果已经存在一个带有HttpOnly标志的PHPSESSID cookie,它只会将这个放在另一个旁边。在我的例子中,在Firefox中,在我尝试通过document.cookie=“PHPSESSID=FIXATEDSESSIONID”设置PHPSESSID之后,它向服务器发送了以下cookie:


因此,请求中现在有两个会话ID。在我的设置中,使用PHP5.6.25,服务器首先使用cookie来绑定会话。因此,在Firefox和PHP5.6.25中,我能够通过JavaScript固定会话ID(FIXATEDSESSIONID)。原始会话ID仍在请求中,但被服务器忽略。请注意,FIXATEDSESSIONID实际上就是我注入的会话ID。因此,不必从PHP服务器获取合法的会话ID。

TLDR:是的,在PHP和Firefox中,可以添加第二个会话cookie,由于标头中的顺序,该cookie优先于原始会话cookie。 如果有其他功能允许在服务器上设置会话ID,也可以。这取决于特定于应用程序的功能

完整解释

取决于您的网站上有哪些其他功能来操作会话。在少数情况下,应用程序允许用户通过HTTP请求设置会话。例如,通过GET参数

我相信您想知道,如果原始会话ID设置在带有HttpOnly标志的cookie中,是否可以修复会话ID。因此,我在一个PHP应用程序上做了一个小测试,我正在进行pentest。令人惊讶的是,您可以通过作为XSS注入的JavaScript设置新的PHPSESSID。如果已经存在一个带有HttpOnly标志的PHPSESSID cookie,它只会将这个放在另一个旁边。在我的例子中,在Firefox中,在我尝试通过document.cookie=“PHPSESSID=FIXATEDSESSIONID”设置PHPSESSID之后,它向服务器发送了以下cookie:

因此,请求中现在有两个会话ID。在我的设置中,使用PHP5.6.25,服务器首先使用cookie来绑定会话。因此,在Firefox和PHP5.6.25中,我能够通过JavaScript固定会话ID(FIXATEDSESSIONID)。原始会话ID仍在请求中,但被服务器忽略。请注意,FIXATEDSESSIONID实际上就是我注入的会话ID。因此,不需要从PHP服务器获取合法的会话ID

Cookie: PHPSESSID=FIXATEDSESSIONID; __utma=139474299.465096418.1547461023.1548839033.1548851774.5; __utmz=139474299.1547461023.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); acceptCookies=true;