用户登录/记住我/禁令系统

时间:2012-07-18 10:35:09

标签: php

我目前认为,当用户登录其用户名并且用户ID保存在cookie中时。因为这不是我现在计划改变方法的最安全的方法;

当用户登录时,cookie中会保存一个唯一的令牌。用户名,userid,禁止布尔和唯一令牌存储在会话中。 Cookie中的令牌必须与要登录的会话中的令牌匹配。

我考虑过将令牌存储在数据库中?在我的代码中我很快就需要用户名和用户ID,因此在会话中存储对我来说是最合乎逻辑的想法,而不是总是查询数据库。

无论如何,我的方法是否合适?如果没有,什么是经证实的方法?

1 个答案:

答案 0 :(得分:0)

您的方法听起来合适。我不清楚你打算在哪里存储会话对象,但我认为将它存储在数据库的会话表中是很好的。确实,这需要数据库查询在呈现每个页面之前从数据库中检索会话(例如,如果会话令牌不好,您可能希望重定向到登录页面),但这不是我的经验中的性能问题。作为奖励,一旦你有一个会话表,你就可以在它上面运行有趣的查询来跟踪Web应用程序的使用情况。

我的Programming PHP副本说“使用PHP维护状态的最佳方法是使用内置的会话跟踪系统。”在编写自己的之前,你应该考虑这一点。

无论采用何种方法,您都应该确保会话令牌是随机生成的,并在合理的时间后过期。否则,攻击者可以通过猜测来伪造会话令牌,或者窃取其他人的会话令牌并劫持他们的会话。

相关问题