使用 Cookie 和 Salted 哈希的 PHP 登录系统
我正在开发一个基于PHP的登录系统。每个用户都有一个ID(一个数字)和一个密码,这些密码存储为盐渍哈希。
我能够确定登录是否成功,但现在我需要将该信息存储在某个地方(以便用户不会永久注销)。
过去,我玩过_SESSION美元的变量。但是,当用户离开浏览器时,这些似乎会被删除,这是不希望的。另外,我不能“假设”用户不会尝试欺骗系统,所以它必须是安全的。
所以,这是我的问题:
- 我应该使用 或 ?这些方法的主要优点是什么?
$_SESSION
$_COOKIE
- 如何实现“记住我”复选框?
- 哪些信息应存储在会话/Cookie 变量中?
请注意,在此特定问题中未考虑任何数据库安全问题。
关于数字3,我的意思到底是:
- 我应该将用户的ID和散列密码存储在cookie/会话中,还是
- 我应该将用户的ID和非散列密码存储在cookie/会话中,还是
- 我应该存储“会话ID”和密码(哈希或非哈希?)还是
- 我应该存储“会话ID”,“ID”和密码(再次,散列或非散列)吗?
我想保持我的网站尽可能安全,高效和用户友好。如果采用基于SessionID的方法,我也希望得到一些关于如何将其存储在数据库中的解释。
提前感谢您
编辑:Eran和Brian的答案结合起来似乎是我需要的。不幸的是,我只能将其中一个标记为已接受。我将尝试继续实现,看看哪一个更有用。