FoosunCMS-踢人的分析

来自站长百科
跳转至: 导航、​ 搜索

导航:返回上一页

FoosunCMS-踢人的分析

首先,系统频繁踢人不是程序问题,至少我在分析代码的过程中没发现.出现这种情况的大多数是把风讯系统放到了虚拟主机上,空间提供商为了顾全自身服务器的安全运作,在一些设置上采取保护措施.比如对"应用程序池"实行限时回收.经过跟踪测试我发现,登陆风讯系统后默认情况下可以遍历到8个Sesstion变量:


GetCode

Admin_Style_Num

Admin_Name

Admin_Pass_Word

Admin_Parent_Admin

Admin_Is_Super

Admin_Pop_List

Admin_Add_Admin


被踢的关键原因在于系统的三个关键Session被释放了.

Session("Admin_Name") ,Session("Admin_Pass_Word"),Session("Admin_Is_Super"),Session("Admin_Pop_List")

Session会无故丢失吗?因为用户一般是在不停地操作中被踢的,所以可以排除Session超时的可能(除非部分程序采用了window.open的方式打开窗口,这在少数情况下会发生Session、Cookies丢失的现象)。另外,Session超时时间被设定成10分钟,不会这么快就超时的。

排除以上可能,我们进入下一步:


设置性能应用程序池设置

打开 IIS 管理控制台,单击加号展开本地计算机。

单击加号展开“应用程序池”文件夹。

右击适当的应用程序池,然后单击“属性”。出现应用程序池的属性对话框。

单击“性能”选项卡,然后设置适当的应用程序池设置。

应用程序池“属性”对话框的“回收”和“性能”选项卡分别如下图:


此主题相关图片如下:

踢人的一些分析1.png


此主题相关图片如下:

踢人的一些分析2.png


请分别按上图所示设置。使用虚拟空间服务商提供服务器的朋友请联系服务商进行相应设置。一般情况下应用程序池回收后服务器系统日志里面会记录以下日志:

警告信息:

为应用程序池 'DefaultAppPool' 提供服务的进程 ID 为 3724 的 worker 进程已经请求回收,因为 worker 进程达到了允许的运行时间限 制。

这样的话服务器会清空所有采用该应用程序池的站点的Session对象。



按照常规,虚拟空间服务商不会把"应用程序池"设置为"空闲超时"多少分钟而进行回收工作。我估计一般会设置成"内存回收",也就是说,该"应用程序池"下的站点消耗内存达到服务商设置的底线时,服务器就进行应用程序池回收工作。因为我在帮"火星菜鸟"测试时发现,用自己的代码测试比用风讯系统时被踢的次数明显很少,但也经常被踢。模防被踢原理测试了一下。以下是测试代码:



文件 test.asp

<%

Session("SessionTest") = "Ksir"

Response.Redirect("view.asp")

%>

文件 view.asp

<meta http-equiv="refresh" content="1">

<%

Response.Write(Session("SessionTest"))

%>




参考来源[ ]