-1

我知道 Session 用于跟踪客户端的操作,或者就像登录一样,如果有 Session,则显示内容,如果没有,那么他是访客,我们也在这个 Session 中存储值或属性。

到目前为止,我总是将用户 ID 存储在 Session 中,作为帮助我在其他页面中识别他的主要属性。

$_SESSION['userID'] = $userID; //example: 100, 101, 102...

我可以检索此 ID 并根据此 ID 从数据库中获取数据。

$userID = $_SESSION['userID'];
$query = "SELECT * FROM posts WHERE user_id = ".$userID;

这是使用会话的正确方法吗?ID不应该存储在Session中吗?有什么安全风险吗?如果不应该存储它,那么我如何识别用户?

4

3 回答 3

1

是的,将 userID 存储在会话中就可以了,只是不要使用它来验证用户,而是使用身份验证 ID。

除此之外,应该没有安全风险。

只是不要将它们用于存储敏感信息(密码和类似信息)。

于 2013-03-15T13:50:15.820 回答
0

会话永远不会转移给用户。浏览器获取一个名为 PHPSESSID 的 cookie,其中包含您的会话 ID。

这意味着:无论您在会话中存储什么,它都完全保存在服务器上。

从这个角度来看,会话中的数据不存在安全问题。你可以在那里存放任何你喜欢的东西。

于 2013-03-15T13:54:35.577 回答
0

在会话范围内存储尽可能少的信息。

原因是在现代浏览器中,相同的会话在同一浏览器实例或不同浏览器实例中的选项卡之间共享。换句话说,例如,如果您在 firefox 中打开应用程序,然后再次启动 firefox,则新的 firefox 窗口将从旧窗口继承会话。

现在是坏的部分。如果您的浏览器 1 中有 session.abc = 123,然后在浏览器 2 中执行一些操作将其更改为 456,然后返回浏览器 1 并发出某种页面请求(例如提交表单),它将在该请求上使用 session.abc 的新值。

我们被这件事烧死了。人们无意中更新了错误的记录。

于 2013-03-15T14:00:53.847 回答