安全地存储用户的“登录”状态

时间:2012-11-23 20:52:03

标签: php database security codeigniter

我正在使用PHP和Codeigniter来执行此操作。目前我只是使用用户名和$ logged_in变量设置为true来向用户保存cookie。然后,当他们尝试访问某个页面时,我会检查他们的$ logged_in的状态,如果是,则可以自由访问。

我觉得这可能不是最安全的方法。我应该使用更好的策略吗?

2 个答案:

答案 0 :(得分:3)

根本不安全。 Cookie被视为用户输入,在任何情况下都不可信任。

使用会话。 你也可以使用某种自定义登录加密代码(我个人建议使用SHA1),它与数据库中的登录代码相匹配,每次刷新,比如5分钟。

答案 1 :(得分:0)

CodeIgniter为这个问题提供了一个很好的解决方案 - 您可以使用数据库会话。

使用数据库会话,您放入会话的所有数据都存储在SQL数据库中。用户获取具有唯一会话ID的cookie,该ID会定期更改。会话ID以及IP和用户代理用于将用户与其会话数据进行匹配,从而使用户无法篡改他们自己的会话数据,并且他们很难劫持其他人的会话。

您可以在CodeIgniter User Guide中了解有关CodeIgniter数据库会话的更多信息。