0

我一直在阅读有关登录、存储密码和用户名的信息。将密码存储在 cookie 中是一件大事。所以我选择只在 cookie 中存储用户名,我想这很好。我将它存储到 cookie 中,以便我可以轻松访问它并处理“记住我”选项。但是,如果我想通过以下方式识别用户,那么密码呢?SELECT * FROM databse WHERE username='$_COOKIE[]' AND password=''

我在想会话。我可以在会话中存储密码,不安全但很好。但问题是当用户关闭浏览器并重新打开它时会发生什么。他们将保持登录状态,但会话将消失,因此每次我必须检查是否设置了 SESSION[pass] 如果没有,请从数据库中选择并设置它。

那是我的解决方案,有人可以建议我更合适的解决方案吗?

事实是,没有超级安全的系统,如果有人真的想闯入,他们就会成功。

4

2 回答 2

3

您可以有一个名为的表remember_tokens,其结构如下:

  id         |         user_id              |        created
------------------------------------------------------------------------
f129ea9c     |            1                 |     2-3-2013 12:31:51
e9ac8aa0     |            2                 |     2-4-2013 08:21:13

id有一些唯一的 id,比如一个UUID或随机生成的字符串。user_id是要记住的用户的id。created是创建记录的时间(因此您可以在 X 时间后注销用户)。

现在,如果用户成功登录并希望被记住,您可以添加一条具有唯一性id和他的user_id到的新记录remember_tokens。您还可以使用它创建一个新的 cookie setcookie(),该 cookie 将包含id您刚刚插入的随机生成的内容。

现在,当用户下次请求该站点时,您会看到他已经remember存储了 cookie。您获取该记录,检查它是否尚未过期并使用该user_id列登录相应的用户。这样,您就不会在 cookie 中存储敏感信息。

希望这可以帮助

于 2013-03-29T10:23:44.473 回答
1

以下是一些更详细的答案供您遵循:

在回答这个问题时还收集了一些很好的资源:网站身份验证权威指南

于 2013-03-29T10:27:04.190 回答