PHP允许用户生成会话ID,并启用严格_模式

PHP允许用户生成会话ID,并启用严格_模式,php,session,Php,Session,正如标题所示,我的设置允许我选择任何想要的会话ID,即使启用了严格模式 PHP的配置为(运行PHP_info();) 我可以通过将域的PHPSESSID cookie设置为任意值,然后通过将此cookie与登录请求一起传递来登录,从而验证会话ID是否可以“用户自定义” 这意味着任何人都有可能被欺骗,将cookie ID设置为“123”,我的服务器将验证他们的登录名,并允许他们在后续请求中使用此ID—当然,假设他们拥有使“123”成为有效会话的凭据—从而损害他们的身份 为什么我的服务器在ID不存在

正如标题所示,我的设置允许我选择任何想要的会话ID,即使启用了严格模式

PHP的配置为(运行PHP_info();)

我可以通过将域的PHPSESSID cookie设置为任意值,然后通过将此cookie与登录请求一起传递来登录,从而验证会话ID是否可以“用户自定义”

这意味着任何人都有可能被欺骗,将cookie ID设置为“123”,我的服务器将验证他们的登录名,并允许他们在后续请求中使用此ID—当然,假设他们拥有使“123”成为有效会话的凭据—从而损害他们的身份

为什么我的服务器在ID不存在时不重新生成它?我当时的印象是,这就是严格模式的全部理念。我错了吗

我可以通过远程登录并找到密钥来确认该ID是否已从服务器上删除(本例中为memcached),即使我仅将其设置为123或任何类似的不安全值,它也会在注销时删除,并在登录时返回。如果我在登录时没有设置cookie,它将正确地生成一个新cookie


编辑:我通过调用
session\u regenate\u id(true)修复了它
成功登录后,强制替换cookie-但这并不能回答原始问题。

将您的解决方案作为此问题的答案。如果这是一个问题的答案,而不是一个替代的解决方案,我想:)明白了,你可以在“把你的解决方案作为这个问题的答案”上阅读更多关于这个问题的内容。如果这是一个问题的答案,而不是一个替代的解决方案,我想:)明白了,你可以在
session.use_cookies On
session.use_only_cookies On
session.use_strict_mode On
session.use_trans_sid 0
session.cookie_httponly On
session.cookie_secure On