PHP使用Cookies和Salted Hashes的登录系统

9 浏览
0 Comments

PHP使用Cookies和Salted Hashes的登录系统

我正在开发一个基于PHP的登录系统。

每个用户都有一个ID(一个数字)和一个密码,密码以盐哈希的形式存储。

我已经能够确定登录是否成功,但现在我需要将该信息存储在某个地方(以便用户不会永久注销)。

过去,我曾尝试使用$_SESSION变量。然而,当用户离开浏览器时,这些变量似乎会被删除,这是不希望发生的。

另外,我不能“假设”用户不会试图欺骗系统,所以必须保证安全。

所以,这里是我的问题:

  1. 我应该使用$_SESSION还是$_COOKIE?每种方法的主要优势是什么?
  2. 如何实现“记住我”复选框?
  3. 哪些信息应该存储在会话/cookie变量中?

请注意,在这个特定的问题中没有考虑数据库安全问题。

关于第3个问题,我的意思是:

  • 我应该在cookie/session中存储用户的ID和哈希密码,还是
  • 我应该在cookie/session中存储用户的ID和非哈希密码,还是
  • 我应该存储一个“SessionID”和密码(哈希或非哈希?)还是
  • 我应该存储一个“SessionID”,“ID”和密码(再次哈希或非哈希)?

我希望保持我的网站尽可能安全,高效和用户友好。

如果采用基于SessionID的方法,我也希望能得到关于如何将其存储在数据库中的解释。

提前谢谢你们的帮助。

编辑:Eran和Brian的答案结合起来似乎是我需要的。不幸的是,我只能选择其中一个作为接受的答案。我将尝试实施,看看哪一个更有用。

0