我使用PHP会话创建了一个登录系统。以下是其工作原理:
1)用户使用有效的登录信息登录时: 他们的信息(用户名和密码)以及一些其他信息将与会话一起存储: 过期时间:仅为当前时间添加5分钟(因此如果用户在22:30登录,则过期时间将为22:35)。
2)用户已登录的每个页面视图都会检查会话是否存在。如果不存在,则将用户重定向到登录页面。 如果会话存在,则检查过期时间并将其与当前时间进行比较。如果过期时间大于当前时间(用户已经闲置了5分钟或更多时间),则会检查其用户详细信息(与数据库中的详细信息进行比较),更新“Expiretime”会话,但如果过期时间小于当前时间,则不会检查任何详细信息,会话会更新“Expiretime”,并允许用户继续浏览。我这样做是为了防止对数据库进行持续查询以节省带宽。
所以基本上,一旦用户成功登录,直到他们变得不活跃(停留在一个页面)超过5分钟或注销,他们的用户名和密码就不会再次在数据库中进行检查。
忘记向大家提到一些内容了: 过期时间会话实际上称为expire_time_unique_characters($_SESSION['expire_time_ '.$unique_nu]),这意味着邪恶的人也必须找到$unique_nu来伪造会话……
我只是感觉这不是很安全。
此外,这个项目是开源的(人们可以查看源代码),因此在这里存在更高的风险......
你们能给我一些反馈吗?
谢谢
1)用户使用有效的登录信息登录时: 他们的信息(用户名和密码)以及一些其他信息将与会话一起存储: 过期时间:仅为当前时间添加5分钟(因此如果用户在22:30登录,则过期时间将为22:35)。
2)用户已登录的每个页面视图都会检查会话是否存在。如果不存在,则将用户重定向到登录页面。 如果会话存在,则检查过期时间并将其与当前时间进行比较。如果过期时间大于当前时间(用户已经闲置了5分钟或更多时间),则会检查其用户详细信息(与数据库中的详细信息进行比较),更新“Expiretime”会话,但如果过期时间小于当前时间,则不会检查任何详细信息,会话会更新“Expiretime”,并允许用户继续浏览。我这样做是为了防止对数据库进行持续查询以节省带宽。
所以基本上,一旦用户成功登录,直到他们变得不活跃(停留在一个页面)超过5分钟或注销,他们的用户名和密码就不会再次在数据库中进行检查。
忘记向大家提到一些内容了: 过期时间会话实际上称为expire_time_unique_characters($_SESSION['expire_time_ '.$unique_nu]),这意味着邪恶的人也必须找到$unique_nu来伪造会话……
我只是感觉这不是很安全。
此外,这个项目是开源的(人们可以查看源代码),因此在这里存在更高的风险......
你们能给我一些反馈吗?
谢谢
session_start
。而且,绝对不要在数据库中存储明文密码。 - Niklas B.