Ala*_*ats 11 php database session session-management
我有一个php应用程序,我正在使用$ _SESSION本身为用户保存会话变量.将它存储在数据库中有什么特别的优势吗?
我正在寻找一篇可靠/研究得很好的文章,该文章更多地讨论了这个问题.我还没能找到任何东西.
将数据存储在数据库中的优势在于,只要您希望数据存在,数据就会存在.
您的浏览器将根据其设置方式销毁会话,这使得它有点不可靠.然而,我无法找到关于此的文章,但这是我用作这种情况的惯例.
任何需要长期存储的数据,例如我存储在数据库中的用户详细信息和活动.任何仅与当前工作空间相关的数据,如登录站点和发布一些注释等,都可以存储在会话中.例如,我在会话中存储用户身份验证详细信息,以不断检查用户是否已登录以及是否将他/她重定向到正确的页面.
在整个应用程序中检查访问权限时,这会产生奇迹.
对我来说,将用户详细信息存储在数据库中更加安全,因为它不能像$ _SESSION那样以公共方式访问.
如果你愿意,请不要同意我的意见.
在某个时间点,您将不得不在会话中存储一些内容。无论是所有会话变量还是只是会话表中一行的 ID。在这种情况下,更改存储在加密不良的会话中的 ID 并劫持不同的会话将相当容易。
考虑一下:
完整会话选项。它存储了用户 ID、用户名以及加密和散列的密码,以便每次调用页面时都会验证我的登录。要劫持其他人的会话,我必须知道他们的用户 ID、用户名和密码哈希,并能够克服会话固有的加密。
会话+数据库选项。它只存储了一个引用数据库中的行的会话 ID。要更改我想要的会话,我所要做的就是破坏会话的加密,然后将会话 ID 加一。然后我将被验证为在我之后登录的用户。
如果您有很多额外信息,您可以将登录详细信息存储在会话中,然后将任何与登录无关的数据存储在会话表中,但话又说回来,您也可能不需要额外的表并从任何相关表中提取数据你需要。