存储在cookie中以保持持久登录状态的最佳方法是什么?
我见过许多网站(以及初学者教程!),只是在cookie中存储了类似validUser = 1的内容。很明显,我可以欺骗它,网站会认为我是一个有效的用户。
如果用户名存储在cookie中,我可以通过在我的请求中发送带有他/她用户名的cookie来伪装成任何用户。
因此,如果您在cookie中存储用户名和密码,那么我必须知道用户名和密码才能登录。实际上,用户已自动登录 - 就像保存密码一样他的浏览器。无需每次都自己在凭证箱中输入凭证,浏览器会自动发送每个页面请求。
但这仍然是一个坏主意吗?存储纯文本密码不是一个好主意,但这是在登录时如何在POST数据中发送。此外,它可以存储哈希。但我仍然觉得不舒服。
可能不应使用cookie来存储除会话ID之外的任何内容,并且用户数据存储在服务器本身上。这可能是一个更安全的位置,假设服务器没有共享。
看一些开源软件,比如论坛软件,他们使用的是一个更复杂的系统,但我无法完全理解通过浏览代码所做的工作。
标准的“最佳做法”是什么?
答案 0 :(得分:6)
答案 1 :(得分:3)
最佳做法是使用SESSION代替COOKIE来使用数据。 COOKIES用于存储通用信息,而不是用户的特定信息,这就是SESSIONS的用途。
答案 2 :(得分:0)
最佳做法是存储随机生成的会话ID。然后,会话将存储用户ID或您需要存储的任何其他内容。在PHP中,session_start()
方法自动生成会话ID和名为PHPSESSID的cookie,因此您只需担心将数据存储在$ _SESSION数组中,而不是存储在cookie中。
答案 3 :(得分:0)
唯一应该在cookie中的是由PHP生成的sessionid(这是在使用会话时自动完成的)。您不应该在cookie中存储任何内容,除非是为了“记住我”复选框而记住的用户名。