我目前正在研究性能优化,并正在考虑一种加速基于 cookie 的会话处理的方法。当没有服务器端数据被它引用时,拥有一个会话标识符是有好处的。我正在尝试确定是否将指示器附加到会话 ID 以显示是否有服务器端数据是一个好主意。这将避免在某些情况下尝试获取不存在的数据的需要,并且可以进一步扩展到其他简单情况(例如,区分不同的服务器端会话数据存储后端)。
例如,当用户第一次访问一个站点时,他们会得到一个会话 id 'abc' 并且......
Set-Cookie: sessionid=0abc; HttpOnly
将任何数据添加到会话时......
Set-cookie: sessionid=1abc; HttpOnly
显然,服务器端数据的存在/不存在对于窃听者来说是显而易见的。并且 cookie 有可能被篡改,使其看起来与服务器端数据相关联——但在这种情况下,最糟糕的事情是它的行为方式与当前会话的行为方式相同。
我还注意到,在欧盟,我们现在必须在删除任何非关键 cookie 之前征求用户的同意。
此外,我不建议使用 3 个字母的会话标识符!除了一个小存根之外,会话 id 的其余部分将继续遵循本质上是随机数据的通常做法。我假设在存根更改的地方重新生成它没有任何好处。
但是任何人都可以看到我看不到的问题吗?