Jos*_*ola 18 asp.net security session iis-6 stateserver
我们在会话中存储两个对象.不知何故,来自另一个用户的一个对象被加载到另一个用户的会话中.用户应该无法访问这些特定数据,一旦他们看到它就知道出现了一些非常错误的信息.
我们对他提供的数据有视觉证据,除非会议混淆,否则肯定没有办法发生.这是一个非常可怕的情况,我们无法弄清楚(我们无法重现它).我们唯一的答案是责怪ASP.NET StateServer混合会话变量,这是完全不可接受的,并使我们处于不利地位.
我们的应用程序是使用StateServer cookieless="false"会话模式和FormsAuthentication 在带有IIS6的Windows Server 2003上运行的ASP.NET 2.0应用程序.
还有其他人有这个问题吗?我们怎么解决呢?
Lin*_*nus 15
我们在之前的公司遇到过这个问题并花了3个星期的时间进行调试.ASP.NET正在为用户提供其他人的会话状态.在调试环境中复制真的是不可能的.
我们发现它时的修复只是web.config中的内容.我不完全记得它,所以我花了一些时间谷歌搜索.我认为这个问题与输出缓存有关.在"会话和输出缓存"下查看本文.
http://download.microsoft.com/download/3/a/7/3a7fa450-1f33-41f7-9e6d-3aa95b5a6aea/MSDNMagazineJuly2006en-us.chm(文章的标题是通过避免这些共同的ASP.NET保持网站顺利运行 Jeff Prosise在2006年7月版的MSDN杂志中的陷阱)
如果这听起来像您的场景,那么修复可能只是禁用web.config中的enableKernelOutputCache选项.
祝好运.
首先在你自己的代码中查找错误 - 这是迄今为止最可能的解释.例如,使用静态字段或其他共享内存(如ASP.NET缓存)来获取特定于用户的数据.