当2个用户(几乎)同时访问同一页面时,我遇到了竞争情况。这使用户可以访问其他用户的数据。
我几个月来一直试图抓住这个问题,终于设法做到了。我正在使用Yii Framework 1.1,并且用户登录过程如下:
我已经用PHP研究了会话的竞争条件,其中一些提供了$ _COOKIE来解决会话的竞争条件,因此并没有真正为我的问题提供任何解决方案。
由于我能够捕获该问题,因此可以轻松地通过刷新来解决它,但是如果有更稳定的解决方案,我希望顺其自然。
任何建议将不胜感激。
欢呼声
您可以使用带有x或x +标志的fopen来共享文件。只有一个实例可以同时打开文件。
但是您所描述的内容不一致且奇怪:您在使用所描述的会话时无需处理种族条件。我想问题是您在每次页面加载时都会重新生成会话ID,因此您可能在做不应该做的事情。
在会话上,每个用户代理必须仅生成一次会话ID,但是正如您所描述的那样,该ID在每次页面更改时都会重新生成,并且作为次要问题,它以较低的熵生成。
如果您解决了第一个问题,那么低熵问题将得到缓解,但并没有解决。