PHP允许用户生成的会话ID启用了strict_mode

时间:2015-09-14 22:01:41

标签: php session

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

PHP的配置是(当运行php_info();)

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

我可以通过将域的PHPSESSID cookie设置为我想要的任何内容来验证会话ID是否可以“用户自定义”,然后通过使用登录请求传递此cookie来登录。

这意味着任何人都可能被欺骗将他们的cookie ID设置为“123”,我的服务器将验证他们的登录并让他们将此ID用于后续请求 - 当然他们有凭据使“123”a有效会议 - 妥协他们的身份。

为什么我的服务器在不存在时不会重新生成ID?我认为这是strict_mode的整个想法。我错了吗?

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

修改:我在成功登录后通过调用session_regenerate_id(true);修复了此问题,强制更换Cookie - 但这不符合原始问题。

0 个答案:

没有答案