我已经使用PHP会话创建了一个登录系统.
以下是它的工作原理:
1.)当用户登录时(使用有效的登录信息):他们的信息(username和password)被存储到一个会话中,以及一些其他信息
The Expire time:这只是在当前时间上添加了5分钟(所以如果用户登录时间为22:30,到期时间为22:35).
2.)在登录用户的每个页面视图上:检查会话以查看是否存在.如果没有,则将用户重定向到登录页面.如果会话确实存在,则会检查expire time并与之进行比较current time.如果expire time更多的则是在current time(用户处于非活动状态5+分钟),那么他们的用户的详细信息(会话)检查(相比于那些在数据库中)和Expiretime会话被更新,但如果expire time是小于的current time,它不会检查任何细节,更新expire time会话,并允许用户继续.我这样做是为了防止不断查询数据库以节省带宽.
所以基本上,一旦用户成功登录,他们的用户名和密码就不会再次在DB上检查,直到他们变为非活动状态(停留在一页上)5分钟或者他们退出.
FORGOT提到一些人:
过期时间会话实际上被称为expire_time_unique_characters($_SESSION['expire_time_'.$unique_nu]),这意味着邪恶的人也必须找到$unique_nu伪造会话的时间......
我只是觉得它不是很安全.
此外,这个项目是开源的(人们可以看到源代码),因此在这里带来更高的风险......
你能给我一些反馈吗?
谢谢
$_SESSION只要使用得当,是比较安全的。例如,如果您将会话文件保留在 Web 根目录下,则除非能够直接访问服务器文件系统本身的人,否则无法访问它们。因此,您仍然希望对密码进行加密,但纯文本的用户名完全没问题。
将会话 ID 保存在 cookie 中,而不是使用查询字符串方法,否则任何复制 URL 的人都会无意中共享其会话并绕过登录。
那应该就可以了。显然,如果有人侵入用户的网络并获取 cookie 数据,那么他们可以使用它来冒充用户,但对此您几乎无能为力。您可以使其变得更加困难(例如,要求用户代理字符串相同),但如果用户的网络受到威胁,最终您无能为力。无论如何,您没有责任保护他们的网络,只需保护您服务器上的他们的数据。