【发布时间】:2013-02-14 18:30:58
【问题描述】:
所以我的问题非常基本。
当检查用户是否仍在任何页面上登录时,我将使用
if (isset($_SESSION['user']) && $_SESSION['user'] == true) { CODE }
但是,我不应该为 $_SESSION['user'] 使用散列值而不是布尔值吗? 我找到的所有指南都使用布尔值,但从我的角度来看,这是一个安全漏洞,不是吗?人们一直在谈论 Session-Hjacking 和 Session-Fixation,如果我只是为用户会话使用布尔值,那将非常容易,不是吗?还是我只是在这里混在一起?
谢谢
【问题讨论】:
-
劫持会话不会以某种方式让您访问会话数据。数据仍然完好无损(除非您允许用户更改)。
-
为什么? $_SESSION 数据仅存在于服务器上,用户不能直接访问/操作,除非您的代码允许他们这样做。
-
但是劫持使您可以访问会话访问的数据。那么我对这些类型的会话与 PHPSESSID 不同吗?
-
@JustBasti 您仍然对服务器端和客户端感到困惑。自己试试吧。启动会话并查看存储在浏览器中的会话 cookie,名为
PHPSESSID。它只是一个 32 位的十六进制字符串。这就是劫持者获得的所有信息,除非您的程序向他们透露更多信息,因为他们基本上将以原始用户身份登录。 -
@BackinaFlash 为最坏的情况做准备绝不是坏的事情。有人可能会入侵任何特定的服务器吗?不,但这是可能的。安全总比后悔好。
标签: php security authentication