关于中间人攻击
HTTP
请注意,如果您的站点使用该协议,则完全有可能劫持外国用户会话。
为了防止会话劫持攻击,您需要启用 HTTPs。
HTTP 将与请求和回复相关的数据作为简单文本(未加密)传输。
由于会话 ID 要么保存在 cookie 中,要么保存在 URL 中(请不要使用该选项!),受攻击的 MITM 只需读出会话 ID。然后,MITM 攻击者在他的浏览器中设置会话 ID cookie 并拥有其他用户的身份。
要获得会话 ID,MITM 需要一个关于客户端到服务器系统的网络路由的特权位置。攻击者要么需要位于客户端系统和服务器系统之间。或者它需要位于客户端的网络中并模仿为客户端系统的默认路由器。
关于会话问题
modx 的系统属性session_handler_class有什么价值?
如果是默认值modSessionHandler
,modx 使用数据库管理会话。将设置留空以指示 modx 启用标准 PHP 会话处理。
关于缓存问题
缓存通常保留并检索发送到客户端的数据,例如 HTML 代码。通常,您不会在缓存文件中找到 cookie。
如果匿名用户 X 突然获得另一个登录用户的会话 cookie,modx 需要以某种方式找到其他用户的会话。
如果会话 ID 很长,则不太可能猜测另一个用户的会话 ID。同样,获取另一个用户的持久会话数据的可能性很小。
...除非 modx 以某种方式遍历所有持久会话的集合 - 而不是仅仅获取正确的持久会话文件。
因此:在 modx 的会话处理中寻找搜索操作。
使用 PHP 的刻度功能跟踪执行
作为最后的手段,您可以启用PHP 的刻度功能:
在您的应用程序的开头执行此操作(例如在 index.php 中):
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()
get在每个执行 PHP 语句时调用。您可以使用此机制来准备不同客户端请求的多个跟踪 - 并相互比较。
在这里查看一些跟踪代码,这可能会有所帮助。