-1

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

4

3 回答 3

4

会话不存储在客户端的计算机中。你一定对饼干感到困惑!

于 2013-08-26T12:47:04.453 回答
1

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

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

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

于 2013-08-26T12:46:43.923 回答
1

我希望您首先了解会话是您识别客户的唯一方法。

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

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

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

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

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

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

  1. 您填写表格,点击发送按钮。
  2. 然后将表单中的所有数据发送到服务器。
  3. 服务器检查收到的用户名和密码是否正确。如果正确,它会向您发送安全数据。
  4. 在您下次调用 Web 服务器时,您希望登录。但是,由于 HTTP 的无状态特性,您的服务器不再识别您。

您可以通过在每次呼叫时发送您的用户名和密码来完成这项工作,但这意味着每次请求都必须输入它。

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

这种情况现在又出现了一个问题,即您需要每次在服务器上进行身份验证检查,从而增加了服务器的负载。

输入会话。会话意味着具有某些上下文的状态。它可能是登录用户,可能包含您设置的首选项或任何其他类似的东西。

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

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

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

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

有一些高级技术可以进一步提高安全性,例如每次拨打电话时更改会话 ID,但只有在您希望我这样做的情况下才让我们进入。

干杯! :)

于 2013-08-26T13:20:36.377 回答