网站登录和会话管理


Site login and session management

所以我在一个网站上工作,需要登录一个MySQL数据库与"记住我"的功能。我得到了那个罚款(基于日本的页面)。我不太清楚的是使用会话来跟踪用户的移动。我不担心他们在网站上的历史。我在互联网上看了看,特别是SO,但我还没有真正找到我要找的。也许我只是没有使用正确的关键词来搜索。无论如何……正如我所说,我有实际的登录过程,并且设置了一个cookie,其中包含"记住我"功能的三元组。但是,当用户浏览网站时,我如何跟踪身份验证状态?登录的用户应该能够浏览网站的安全区域,或者脚本应该输出特殊数据,而网站不必检查"记住我"对数据库的每一页加载三元组。我想做一些类似$_SESSION['authed']==true的事情,并且每次页面加载都会检查会话值,但我怀疑这不是一种非常安全的方法。我观察到,如果我设置$_SESSION['authed']==true,关闭浏览器,打开浏览器,然后再次访问该站点,它仍然显示authed=true。现在,我明白,会话变量存储在web服务器上,而不是在浏览器的缓存。然而,我不能看到足够的大局,知道正确的方法去做这件事。

我想做像$_SESSION['authed']==true这样的事情,每次页面加载都会检查会话值

是的,你就是这么做的。

但是我怀疑这不是一个非常安全的方法

很好。您建立一个会话,这意味着您向用户发送一个唯一的cookie。这是你的保障。你拥有一个会话本身就是你的安全保障。然后,您只需记录用户是否在该会话中"登录"。

我观察到,如果我设置$_SESSION['authed']==true,关闭浏览器,打开浏览器,再次访问该站点,它仍然显示authed=true。

是的,cookie不一定在浏览器关闭时过期。每个cookie都有一个指定的过期时间,它们可以持续多长时间。即使没有过期时间的cookie也不一定在浏览器关闭时立即被丢弃。这可能是几年前浏览器的默认行为,但现在不一定是正确的。