时间:2021-07-01 10:21:17 帮助过:4人阅读
  1.SESSION['db'] 是$_SESSION['db']吗?  
 2.为什么要把dbname写在session?  
 为什么不没个site用一个config文件记录不同的信息,例如 每个site都有一个config.php,  
 define('DBNAME', 'db1');  
 3.你的session是保存在db吗? 
  50个企业共用一套PHP脚本,意味着 config.php只有一个, 50个企业一起用。 所以无法单独设置。 不过你到是给我一个灵感,我可以弄config1.php  config2.php config3 ...... 这样, 搞50个也未尝不可呢?  
  
 也是一个蛮好的解决方案,虽然有点傻。呵呵 
  如果这样,那么50个virtual host应该是不同了吧。  
 使用apache 的 Env module,使用方法见我之前写的文章:  http://blog.csdn.net/fdipzone/article/details/9388959  
  
 在virtual host中,加入  
  
SetEnv DBNAME DB1 
tips:使用Env保存的数据只能在web读取,在php cli模式下是不能读取的,请根据具体需求使用。
  数据库长连接是会复用到数据库服务器的连接,但不会复用到数据库的连接  
  
 从  说怎么在他的系统里看到别的公司的数据入手:  
 从“第一次应对措施, 我利用域名泛解析”可知,你的用户身份验证是独立的。目前SSO很流行,不排除你也在使用  
 既然若干个公司可以使用同一套软件而无需修改(包括界面),可见这些公司从事的是同一行业。因此不能排除A公司的人知道B公司人的登录口令  
 用多选项卡的浏览器,在A选项卡上登录A公司后,在B选项卡上登录B公司。回到A选项卡中就可看到B公司的数据了  
 因为多选项卡共享一个cookie,而A设置的 sessionid 被B修改了  
 其实无条件信任传入的数据,这就是CSRF攻击得以实现的基础  
  
 当采用二级域名方式时,因为域名不同所以cookie也不会共用。但是如果依然是单点登录的话,由于信任域的关系,情况不会有任何改变  
  
 目前太多的人不相信数据库的能力,喜欢弄个数据缓存之类的东西(怕数据库累死了,怜悯精神可嘉)  
 数据缓存多以查询名区分,而在你的系统中区分数据隶属关系的是库名,弄混淆了也是很正常的  
  
  
 
   数据库长连接是会复用到数据库服务器的连接,但不会复用到数据库的连接   
   
 从   说怎么在他的系统里看到别的公司的数据入手:   
 从“第一次应对措施, 我利用域名泛解析”可知,你的用户身份验证是独立的。目前SSO很流行,不排除你也在使用   
 既然若干个公司可以使用同一套软件而无需修改(包括界面),可见这些公司从事的是同一行业。因此不能排除A公司的人知道B公司人的登录口令   
 用多选项卡的浏览器,在A选项卡上登录A公司后,在B选项卡上登录B公司。回到A选项卡中就可看到B公司的数据了   
 因为多选项卡共享一个cookie,而A设置的 sessionid 被B修改了   
 其实无条件信任传入的数据,这就是CSRF攻击得以实现的基础   
   
 当采用二级域名方式时,因为域名不同所以cookie也不会共用。但是如果依然是单点登录的话,由于信任域的关系,情况不会有任何改变   
   
 目前太多的人不相信数据库的能力,喜欢弄个数据缓存之类的东西(怕数据库累死了,怜悯精神可嘉)   
 数据缓存多以查询名区分,而在你的系统中区分数据隶属关系的是库名,弄混淆了也是很正常的  
  如果没有使用缓存,则去掉了问题可能存在的一个方面  
 如果不仅仅信任 $_SESSION['db'],而是再有至少一种 判定用户来源的手段的话,则又可以去掉问题可能存在的一个方面  
 当你把已知的可能出问题的方面都排除了,问题还没解决  
 那就是还有未知的潜在问题存在,这才是需要讨论的问题  
  
 楼主也是这个意思,他希望你把你知道的可能出现问题的方面罗列出来,以便于他排查  
 至于如何解决,那是后话了。问题没有找到,任何解决方案都是徒劳的  
  
  
意思是问题出在缓存中? 如果每次都连数据库获取,则没有此问题吗?
数据库长连接是会复用到数据库服务器的连接,但不会复用到数据库的连接
既然若干个公司可以使用同一套软件而无需修改(包括界面),可见这些公司从事的是同一行业。因此不能排除A公司的人知道B公司人的登录口令。
tips:使用Env保存的数据只能在web读取,在php cli模式下是不能读取的,请根据具体需求使用。
  有没有存在一定的概率,把数据库的链接也给复用了?  
 绝无存在的可能  
  
 尤其是SESSION['DB']因为某种不确定原因被清空了的时候?  
 如果 SESSION['DB'] 被清空,那么就相当于执行 mysql_select_db('') 这是要出错的 (No database selected)  
  
 我说的缓存是指项目的 cache 功能  
 一般用于缓存查询结果,频繁访问时不去读数据库  
  
 如果用二级域名,则应将二级域名与数据库名绑定 
  mark,新人路过学习一下  
 如果是我做这个东西,会把客户单独建表,然后每个数据表和索引都加上一个客户ID字段,弄一个简易的总后台添加客户,这样方便管理~  
 前台的Model层传入where xxx 筛选变量时,统一添加上客户ID=xxx~不过不确定这样做法的弊端  
  
 
    
 tips:使用Env保存的数据只能在web读取,在php cli模式下是不能读取的,请根据具体需求使用。   
  你是根?域名,即$_SERVER['HOST'] 判?使用什?????接??  
  
 能否提供那部分的代??考呢? 
  目前我的做法是每一家公司使用一??立的域名,程式根?不同的域名??取各自不同的配置?.  
 a公司用http://a.xx.com  
 b公司用http://b.xx.com  
  
 ??不跨域,目前多?企?之??有出?串??的??,一直表?的比??定,你可以借?看看. 
   目前我的做法是每一家公司使用一??立的域名,程式根?不同的域名??取各自不同的配置?.   
 a公司用http://a.xx.com   
 b公司用http://b.xx.com   
   
 ??不跨域,目前多?企?之??有出?串??的??,一直表?的比??定,你可以借?看看.  
  xuzuning版主很强大。   
 我先结贴了。 目前做法就是在几个地方设置了异常的判断,如果再次出现再来请教!