什么应该被存放在一个登录系统饼干吗?(What should be stored in a cook

2019-07-17 18:03发布

什么是在cookie中保持持久的登录状态存储的最好的事情?

我见过很多网站(和初级教程!),简单地存储像VALIDUSER = 1在cookie中。 显然,我可以欺骗是和网站会认为我是一个有效的用户。

如果用户名是存储在cookie中,我可以在我的要求下,他/她的用户名发送的cookie伪装成任何用户。

所以,如果你保存的用户名密码的cookie,那么我必须知道用户名和密码登录有效的用户将自动登录-它就像具有自己的浏览器保存的密码。 而不必输入凭据到箱子自己每一次的,浏览器会自动与每一个页面请求发送。

但是,这仍然是一个坏主意? 存储明文密码是不是一个好主意,但是这是怎么会在POST数据登录时发送。除此之外,它可以存储散列。 但我还是觉得不舒服。

曲奇饼也许不应该被用来存储,除了会话ID什么,用户数据存储在服务器上。 这也许是它一个更安全的位置,假定服务器不共享。

纵观一些开源软件,如论坛软件,他们使用更复杂的系统,但我不明白它到底是什么,从撇去代码做。

什么是标准的“最佳实践”?

Answer 1:

2篇很好的文章有:

永久登录cookie最佳实践

改进永久登录cookie最佳实践



Answer 2:

最好的做法是使用一个SESSION ,而不是使用的数据的cookie。 Cookies是用来存储有关用户的一般信息没有具体的信息,这是用来做什么的会话。



Answer 3:

最好的做法是存储随机生成的会话ID。 会议然后存储用户ID或其他任何你需要它来存储。 在PHP中session_start()方法自动生成会话ID和一个名为PHPSESSID的cookie,所以你只需要担心$ _SESSION数组中存储数据,而不是在cookie中。



Answer 4:

这应该是在Cookie中的唯一事情是由PHP所产生的会话ID(当你使用会话,这是自动完成的)。 你不应该存储在cookie中的任何可能除了一个“记住我”复选框的目的记住用户名。



文章来源: What should be stored in a cookie for a login system?