PHP登录系统

6 php security session login

我正在使用PHP为Web应用程序创建登录系统.我的问题是,仅在当前会话中存储用户登录信息是否安全?例如,如果名为John的用户成功登录到我的站点,我可以只存储$ _SESSION ['Username'] ='John'和$ _SESSION ['LoggedIn'] = 1然后检查$ _SESSION ['LoggedIn']在每页上等于1以验证用户是否实际登录?或者有更好的方法吗?我不知道这可能导致我的头脑中出现任何问题,但我想确保我不会在我的网站上留下一个可能导致问题的大洞.

此外,我在数据库中存储用户密码+ salt的md5哈希值,而不是它们的实际字符串密码,这样就不用担心了.

如果您需要更多信息或者不清楚,请与我们联系.谢谢!

Vot*_*ple 9

这是一个非常合理的方法.您的访问者将永远无法编辑您服务器上的会话数据(除非服务器本身不安全,在这种情况下任何公平的游戏都是如此),因此会话中的LoggedIn = 1值非常安全.

但是,请记住一个访问者劫持另一个访问者的会话(通过窃取会话密钥)的风险.帮助防止这种情况的一种方法是还将访问者的IP地址(来自$_SERVER['REMOTE_ADDR'])存储在会话中,然后在以后的请求中确认它没有更改.