使用会话变量进行身份验证的替代方法

时间:2011-06-26 20:30:19

标签: php session authentication

我还是PHP的新手,但我阅读的很多内容建议使用会话变量检查用户是否已登录.IE我会添加一个includes.php文件,检查是否{{1但是看到Session变量只是cookie,有人可以轻松地设置自己的权利吗?检查用户是否已通过身份验证的另一种方法是什么?

4 个答案:

答案 0 :(得分:2)

会话与cookie有很大不同。所有数据都存储在服务器上的会话文件中,cookie本身只存储浏览器标识符以匹配服务器上的正确会话文件。不管怎样,你需要使用cookie,所以我相信你可以安全地使用会话来检查经过身份验证的用户。

答案 1 :(得分:1)

会话变量不仅仅是cookie。客户端浏览器接收cookie,将其附加到服务器上的会话,但只有服务器可以设置和读取$_SESSION中的变量。

虽然客户端可以使用cookie将他们想要的任何信息传递给服务器,但会话ID很难(尽管不是不可能)猜测,因此难以劫持其他用户的会话。

防止劫持会话的常用方法是在$_SESSION中存储用户IP地址,用户代理字符串或其他一些可识别字符串的指纹。这也可以是您生成的随机令牌字符串,并发送到客户端,同时也存储在$_SESSION中。在下一个表单帖子中,您希望令牌在隐藏输入中发送,并将其与您存储在服务器上的令牌进行匹配。

答案 2 :(得分:1)

  

但看到Session变量如何   只是饼干,有人可以轻松   自己设定好吗?

错误!会话cookie将仅包含token of the session,会话本身及其值将驻留在服务器上。 cookie将具有的标记值将用于定位会话。

  

另一种方式是什么   检查是否有用户   认证

将身份验证存储在数据库中。

答案 3 :(得分:0)

如果您通过HTTPS进行身份验证,则Cookie将受到保护。此外,当您设置会话时,您正在使用随机会话UUID处理客户端,该会话将转换为服务器上的键值存储,客户端不能只设置“login = true”并获取访问权限。