php会话中使用use_strict_mode

Sal*_*ali 13 php session

任何人都可以解释一下php.ini配置中的use_strict_mode负责吗?在文档中,它告诉我以下内容:

session.use_strict_mode指定模块是否将使用严格的会话ID模式.如果启用此模式,则模块不接受未初始化的会话ID.如果从浏览器发送未初始化的会话ID,则会向浏览器发送新的会话ID.通过严格模式的会话采用保护应用程序免受会话固定.默认为0(禁用).

我的基本理解是它总是为你创建一个会话ID,但我已经看到了另一个配置选项.所以我认为我的理解是错误的.那么我们为什么需要呢?(我最接近的是它阻止了OWASP A9,但它并没有给我很多信息).

hak*_*kre 15

不,这不是会话自动启动.

这就是说,如果有人创建会话ID并将其发送到您的服务器,并且PHP意识到目前为止没有具有该ID的会话(当启用严格模式时),PHP将创建一个新的,不同的会话ID并初始化对于新会话的会话而不是(当严格模式关闭时)会话ID的用户注入值.

PHP维基中的RFC中概述了更详细的介绍以及PHP中严格会话ID处理的动机:请求注释:严格会话.

因此,在关闭严格模式的情况下,用户可以决定她想要使用哪个会话ID.

使用严格模式,用户无法决定.

因此,当您不希望允许用户预先定义会话ID值时,您需要它.您通常希望防止这种情况减少攻击面.

  • 只是为了确保我做对了.我在`strict_mode off`并且没有创建会话.我向服务器发送请求并篡改我的cookie发布`PHPSESSID ='hi'`,因此服务器以`PHPSESSID`'hi'为我启动会话.但如果我对`strict_mode`做同样的事情,那就不会发生.我对吗? (2认同)
  • 是的,这基本上是你所引用的部分已经用非常简单的英语说的...... (2认同)