我有多个 Web 应用程序 (PHP),它们从他们自己的域提供给不同的客户。每个域显然都有单独的 cookie 和会话(域和路径都设置正确)。
我是否需要在数据库中为每个网站设置一个完全独立的会话表以尝试确保唯一的会话?我猜我不需要,因为如果我们使用文件支持的会话,那么每个服务器都使用相同的会话存储。所以我猜想使用数据库存储我也可以重复使用该表。
只是使用会话代码(我正在使用 ADODB),我看不到任何代码来处理会话创建期间的会话 ID 冲突。
它不会给您的应用程序带来任何问题,但是,为了安全起见,我会使用不同的表,除非合并所有会话是您网站上某些功能的一部分。
我以前没有做过,但我真的不认为会有任何问题。
您可以修改会话 ID 以包含简短的站点前缀。只需在创建会话之前修改您的创建会话以调用 session_id($new_id) 。
这也将允许您列出每个站点搜索前缀的所有当前会话。更优化的解决方案是将会话密钥拆分为两个字段,同时按前缀和唯一键前缀索引进行索引。您需要修改会话创建功能才能实现此功能。
您甚至可以通过此前缀验证并拒绝会话(如果绑定到其他网站以提高安全性)。
否则,如果您的会话 ID 正确生成,您应该不会遇到冲突问题。