我一直在阅读有关登录,存储密码和用户名的信息。
在cookie中存储密码 BIG NO 。
所以我选择只在cookie中存储用户名,我猜这很好。我将它存储到cookie中,以便我可以轻松访问它并处理“记住我”选项。
但是,如果我想通过SELECT * FROM databse WHERE username='$_COOKIE[]' AND password=''
我在想SESSION。我可以在会话中存储密码,不安全但很好。但问题是当用户关闭浏览器并重新打开它时。他们会保持登录但会话将会消失,所以每次我都要检查是否有SESSION [pass]设置,如果没有,请从数据库中选择并设置它。
这是我的解决方案,任何人都可以建议我可能更合适的解决方案吗?
事实上,没有超级安全的系统,如果有人真的想要闯入,他们就会成功。答案 0 :(得分: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
。您还可以使用setcookie()
创建一个新Cookie,其中包含您刚刚插入的随机生成的id
。
现在,当用户下次请求该网站时,您会看到他存储了remember
Cookie。您获取该记录,检查它是否尚未过期,并使用user_id
列登录相应的用户。这样,您就不会在cookie中存储敏感信息。
希望这有帮助
答案 1 :(得分:1)
以下是一些更详细的解答:
在这个问题的答案中也收集了一些很好的资源: The Definitive Guide To Website Authentication