关于人在这方面的中间人攻击
请注意,劫持外国如果您的站点使用HTTP
协议,则用户会话完全可能。
为了防止会话劫持攻击,您需要启用 HTTPs。
HTTP将与请求和回复相关的数据作为简单文本(未加密)传输。
由于会话ID要么保存在Cookie中,要么保存在网址(请不要使用该选项!),MITM攻击只是读出会话ID。然后,MITM攻击者在他的浏览器中设置会话ID cookie并拥有其他用户的身份。
要获得会话ID,MITM需要一个关于客户端到服务器系统的网络路由的特权位置。攻击者需要坐在客户端系统和服务器系统之间。或者它需要坐在客户端的网络中,并模仿成为客户端系统的默认路由器。
关于会话的问题
不镆铘”系统属性session_handler_class有什么价值?
如果它是默认值modSessionHandler
,modx使用数据库 管理会话。将设置留空至instruct modx to enable standard PHP session handling。
关于缓存问题
缓存典型地仍然存在,并检索发送到客户端,例如,数据HTML代码。通常情况下,您不会在缓存文件中找到Cookie。
如果匿名用户X突然得到另一个登录用户的会话cookie,modx需要以某种方式找到其他用户的会话。
如果会话ID不平凡很长,那么很难猜出另一个用户的会话标识为 。同样,它也不太可能获取其他用户的持久会话数据。
......除非modx以某种方式遍历所有持久会话的集合 - 而不是只抓取正确的持久会话文件。
因此:在modx的会话处理中监视搜索操作。使用PHP的滴答声功能
作为非常不得已
跟踪执行,您可能使PHP's tick feature:
在您的应用程序(在的index.php EG)的开始这样做:
declare(ticks=1);
register_tick_function('traceStatements', true);
然后,定义蜱功能:
function traceStatements() {
$traceInfo = debug_backtrace();
// Use $traceInfo to identify the last method called
// Trace the method to a central log file
// Create a new log file per incoming http request
}
使用此代码traceStatements()
获取的叫在每个执行PHP语句。您可以使用此机制来准备不同客户端请求的多个跟踪 - 并相互比较。
看一看here对于一些trace code,这可能是有帮助的。
这绝对看起来像一个缓存问题,因为其他海报在答案中已经指出。您可以让MODX输出用户的ID以查看他们是否已登录(匿名应返回用户ID“0”)。只需创建一个名为* getUserID *的代码段,其中包含以下代码:'<?php返回$ modx-> getLoginUserID();'。然后在您的网站上调用它未缓存。 – okyanet
什么是你的session.hash_function值?你可以在你的应用程序前面(无意)更改/缓存头文件的代理和/或缓存?也许你可以通过配置你的web服务器来记录请求和响应头文件。 –