存储登录尝试和当前登录状态,cookie或会话的位置?

时间:2011-03-27 06:14:26

标签: php mysql session cookies

注意:此问题是关于存储登录尝试和当前登录状态的位置。

我正在构建一个Web应用程序,用户需要注册才能获取登录系统时要使用的身份验证详细信息,但我是安全新手。

我希望用户每次会话只登录一次,因此用户不能拥有多个现有的成功身份验证,即无法同时从计算机a和计算机b登录,或者已成功验证相同的用户存在或未注销。

我想我需要跟踪用户的位置,登录尝试和当前登录状态;为了采取相应行动。 我正在寻求关于cookie和会话之间使用的建议,如何跟踪用户的位置以及更多建议的建议。

提前谢谢。

3 个答案:

答案 0 :(得分:2)

这些都不是。
您必须使用数据库来满足您的需求 您必须在数据库中存储当前会话ID,登录尝试和登录状态 不知道什么是位置。

虽然cookie应该用于授权本身,但是要在服务器和客户端之间传输会话ID。

答案 1 :(得分:1)

据我所知,您无法跟踪和比较服务器上的会话,以检查同一“经过身份验证的”用户的活动连接。我假设您在数据库中跟踪您的用户登录名和密码,然后一旦他们进行身份验证,您就设置会话变量以跟踪他们在给定最终用户设备上的当前登录。

我能想象的最好的方法(除了常规的断开连接,用户没有注销等)将在数据库中有一个表来跟踪登录和状态:

  • 用户ID
  • IP地址(从标题/浏览器中提取)
  • 上次登录时间戳(UTC)
  • 当前登录状态(布尔值)
  • 上次已知的服务器会话值

一旦到位,您可以创建意外情况:

  • 如果我通过让服务器销毁存储在数据库中的会话并将其替换为新设备的活动会话
  • ,则可以从已登录的设备中重新登录
  • 在验证时检查IP地址并锁定用户,或使用上述方法注销远程会话

你得到了我希望的想法。

答案 2 :(得分:0)

Cookie 会话之间的主要区别在于Cookie存储在用户的浏览器中,而会话则不存储。这种差异决定了每种方法的最佳用途。

人们应该去 cookies 存储我们想知道的用户将来何时返回网页的内容(例如,记住我在这台计算机上的登录页面上的复选框使用cookies来记住用户返回时) 会话应该用于记住特定浏览器会话的内容(例如用户名,显示在每个页面或任何需要的地方)。

好读: