PHP:一种检查除会话之外的用户登录的方法

时间:2013-08-26 12:44:30

标签: php session

我正在建立一个网站,我正在使用会话来检查用户登录。我想知道是否有更好,更安全的方式来检查用户登录。由于会话存储在客户端计算机中,我认为它们不是非常安全且容易破解。我是否正确?像facebook和twitter这样的大型网站如何检查他们的用户是否已登录。我是PHP的新手,所以不要说我的问题太基础了。

3 个答案:

答案 0 :(得分:4)

会话未存储在客户端的计算机中。你必须与cookies混淆!

答案 1 :(得分:1)

会议绝对是去这里的方式。

无论您使用什么身份验证,如果客户端计算机遭到入侵,客户端的身份验证方法都可能被滥用。所以在这方面,任何其他方式都只能像会议一样安全。

所有大型网站都使用会话,通常与Cookie结合使用。

答案 2 :(得分:1)

我希望您首先了解Sessions是您识别客户的唯一方式。

您不在客户端或服务器端存储会话。 (如果你想要一个安全的系统。)

首先,您需要了解会话的需要,然后才能知道会话是什么。

互联网是一个无状态的机器网络,每个机器都有自己的标识符。我们在发送加载页面或访问各种链接的请求时所做的大部分通信都是通过HTTP(超文本传输​​协议)进行的。

HTTP是一种无状态协议,这意味着协议不需要通过此协议进行的任何通信都可以存储在服务器或客户端上。

让我们通过一个例子来理解这意味着什么:

假设您尝试登录http://example.com

  1. 您填写表格,点击发送按钮。
  2. 然后将表单中的所有数据发送到服务器。
  3. 服务器检查收到的用户名和密码是否正确。如果正确,它会向您发送安全数据。
  4. 在您下次调用Web服务器时,您希望登录。但是,由于HTTP的无状态特性,您的服务器不再能识别您。
  5. 您可以通过每次通话发送您的用户名和密码来完成这项工作,但这意味着必须每次都为每个请求输入它。

    以下是Cookie的作用,您将用户名Cookie设置为Joe,将密码Cookie设置为qwerty。现在每次发送请求时,浏览器都会发送cookie,您很高兴。

    此方案现在再次出现问题,您需要每次在服务器上进行身份验证检查,从而增加其负载。

    输入会话。会话意味着具有某种背景的州。它可能是登录用户,可能包含您设置的首选项或任何其他类似的内容。

    此处,当用户第一次登录时,服务器会生成会话ID。然后,此会话ID由服务器存储在DB,文件或其内存(RAM)中,以及任何其他数据,如登录人员的用户名,首选项等。

    服务器响应然后包含会话ID,其可以是cookie,HTML5会话状态或有时甚至是隐藏字段的形式。

    现在,客户端进行的每个调用都包含会话ID。然后,服务器检查其会话存储中是否存在具有相同ID的任何有效会话,并进入上下文,从而为通过HTTP进行的通信提供类似伪状态的机制。

    您的浏览器存储此cookie的时间也可由服务器在发送cookie时确定。

    有进一步安全性的高级技术,例如每次调用时更改会话ID,但只有在您需要时才进入。

    干杯! :)