我正在开发一个基于PHP的登录系统。 每个用户都有一个ID(一个数字)和一个密码,它被存储为一个盐味散列。使用Cookies和盐渍哈希的PHP登录系统
我能够弄清楚登录是否成功,但现在我需要在某处存储该信息(以便用户不会永久注销)。
在过去,我玩过$ _SESSION变量。但是,当用户离开浏览器时,这些似乎被删除,这是不希望的。 此外,我不能“假设”用户不会试图欺骗系统,所以它必须是安全的。
所以,这里是我的问题:
- 我应该使用
$_SESSION
或$_COOKIE
?每种方法的主要优点是什么? - 如何实现'记住我'复选框?
- 哪些信息应该存储在session/cookie变量中?
请注意,在这个特定问题中没有考虑到数据库安全问题。
关于3号,我的意思到底是:
- 我应存储ID和在cookie /会话的用户的散列密码,或
- 我应存储ID和非如果我存储了“SessionID”,“ID”或者“ID”,那么我应该存储一个“SessionID”和密码(散列或非散列?)或者
- 。和密码(再一次,哈希或非哈希)?
我想保持我的网站安全,但有效和用户友好的尽可能。 如果采用基于SessionID的方法,那么我还要感谢关于如何将其存储在数据库中的一些解释。
预先感谢您
编辑:叶兰的和Brian的回答结合似乎是我所需要的。不幸的是,我只能将其中的一个标记为已接受。我会尽力去实施,看看哪一个更有用。
您应该尽可能重新使用现有的身份验证框架,因为它是*复杂的*。例如,看看https://github.com/delight-im/PHP-Auth – caw 2016-07-13 00:12:52