哪些属性应该存储在Session中


Which attributes should be stored in Session

我知道会话是用来跟踪客户端的行为,或者只是像登录一样,如果有会话,显示东西,如果没有,那么他是客人,我们在这个会话中存储同样的值或属性。

到目前为止,我总是在会话中存储用户的ID,作为一个主要属性,可以帮助我在其他页面中识别他。

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

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

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

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

是的,在会话中存储userID很好,只是不要用它来认证用户,而是使用认证ID。

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

只是不要用它们存储敏感信息(密码等)。

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

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

从这个角度来看,会话中的数据不存在安全问题。

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

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

现在是不好的部分。如果你有疗程的话。在浏览器1中ABC = 123,然后在浏览器2中做一些事情将其更改为456,然后返回浏览器1并进行某种页面请求(如提交表单),它将使用session的新值。

我们已经被这个烫伤了。有人无意中更新了错误的记录。