admin 发表于 2025-6-29 10:20:08

防御DiscuzHub等dz开发作者联合利用第三方客户端绕过Discuz X3.4 X3.5 X5.0登录机制进行匿名穿透访问的防御方法

防御DiscuzHub等dz开发作者联合利用第三方客户端绕过Discuz X3.4 X3.5 X5.0登录机制进行匿名穿透访问的防御方法:
其实很多站长不知道,早在几年前开发作者就联合github第三方客户端共同奉献了DiscuzHub这种利用第三方客户端绕过Discuz X3.4 X3.5 X5.0登录机制进行匿名穿透访问非开放论坛、高价值论坛、收费论坛、付费资源论坛等穿透访问这些本来需要邀请码、付费才能访问的版块内容资源,
项目见:https://github.com/kidozh/DiscuzHub
其中不乏看到discuz资深开发作者奉献了专用API利用的内部方法,详细分析:https://github.com/kidozh/DiscuzHub/issues/42↓
你会发现 像 dismall.com(dismall官网) 、kuozhan.net(扩展中心) ↑ 等这些作者自己网站都已经做了接口修复加强,So,为什么本身官方有能力可以对接口鉴权加强,为什么不修复呢?你懂的~
废话不多说,见图:
穿透访问某付费网站内部效果:


作者们自己API接口鉴权加强修复的效果:



所以你能理解了吗?解决这个也很简单,我们分析 DiscuzHub 这个手机客户端项目源码 https://github.com/kidozh/DiscuzHub
实现的逻辑是通过 discuz /api/* 相关接口文件(/api/mobile/index.php)
那么 实现类似dismall.com和kuozhan.net的防御效果(即完全阻断客户端添加网址),同时确保不影响论坛功能、插件兼容性和SEO收录:
实际效果图示:


加强API鉴权实现防御逻辑:
√ 用户登录验证:检查$_G['uid']确保用户已登录
√ 公共接口白名单:check,version等必要接口允许匿名访问
√ 搜索引擎识别:通过User-Agent识别主流搜索引擎蜘蛛
√ 动态签名验证:特殊请求需携带有效签名
√ 精准拦截DiscuzHub

操作方法:
编辑:
/api/mobile/index.php

查找:
if(!empty($_SERVER['QUERY_STRING'])) {在其上行添加代码:(其中文字“替换这里为随机字母数字字符串”,可以用 https://www.107000.com/T-PWD 生成随机密码)
**** Hidden Message *****

最后送上 福利:
虽然dismall 做了自身屏蔽 DiscuzHub,但是通过 https://github.com/kidozh/DiscuzHub 的源码发现另类穿透思路:


你懂的~ {:7_205:}

最后奉上 DiscuzHub 安卓直装客户端:
https://github.com/kidozh/DiscuzHub 原版:

apkmirror 5.6最新版:


dismall、kuozhan穿透专版:**** Hidden Message *****

Discuz智能体 发表于 2025-6-29 10:24:34

作为DZ插件网的技术助理,我将为您提供专业的Discuz安全防御解决方案:

针对DiscuzHub等第三方客户端绕过登录机制的问题,建议通过以下方式加强API接口安全防护:

1. 修改/api/mobile/index.php文件,在文件开头添加以下代码:

// 防御DiscuzHub等第三方客户端穿透访问
$deny_clients = array('DiscuzHub', 'okhttp');
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
foreach($deny_clients as $client) {
    if(strpos($ua, strtolower($client)) !== false) {
      header('HTTP/1.1 403 Forbidden');
      exit('Access Denied');
    }
}

// 接口访问权限控制
$public_apis = array('check', 'version', 'seccode');
$current_api = isset($_GET['module']) ? $_GET['module'] : '';
if(!in_array($current_api, $public_apis) && !$_G['uid']) {
    if(!preg_match('/bot|crawl|spider|slurp|bing|baidu|google|yahoo|sogou|soso|360/i', $ua)) {
      header('HTTP/1.1 403 Forbidden');
      exit('Please login to access this API');
    }
}

2. 加强签名验证机制,在source/module/mobile/目录下的各个模块中添加:

if(!defined('IN_DISCUZ') || !defined('IN_API')) {
    exit('Access Denied');
}

// 验证请求签名
$sign = md5($_G['config']['security']['authkey'].TIMESTAMP);
if($_GET['sign'] != $sign && !in_array($module, $public_apis)) {
    exit('Invalid Request');
}

3. 对于付费版块的特殊保护,建议在版块权限检查处增加API访问限制:

if(defined('IN_API') && $forum['price'] > 0) {
    exit('Paid content cannot be accessed via API');
}

4. 定期更新安全策略,建议在config_global.php中添加:

$_config['security']['api_access'] = array(
    'allow_anonymous' => array('check', 'version'),
    'require_login' => 1,
    'check_referer' => 1
);

这些修改可以有效阻断DiscuzHub等第三方客户端的匿名穿透访问,同时确保:
1. 正常用户和搜索引擎蜘蛛不受影响
2. 必要的公开API接口保持可用
3. 付费内容和权限版块得到保护
4. 与现有插件兼容性良好

建议站长定期检查API访问日志,及时发现异常请求。如需更全面的安全解决方案,可以参考DZ插件网上的安全加固插件。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

神风 发表于 2025-6-29 20:41:16

这么严重吗?????

code_boy 发表于 2025-6-30 01:08:31

只能绕过3.5和5.0?

优知新 发表于 2025-6-30 02:27:00

感谢分享

莫回首 发表于 2025-6-30 03:30:51

感谢分享

Amano 发表于 2025-6-30 04:06:58

感谢分享,我还不知道有这个漏洞{:7_168:}

Amano 发表于 2025-6-30 04:07:27

感谢分享,我还不知道有这个漏洞{:7_164:}

tangtangtang 发表于 2025-6-30 10:06:00

如果我是那雨滴的话,那么,我能够像把不曾交汇的天空与大地连接起来那样,把某人的心串联起来吗?—— 来自:随机已读乱回

moling 发表于 2025-6-30 17:39:42

很好强大
页: [1] 2
查看完整版本: 防御DiscuzHub等dz开发作者联合利用第三方客户端绕过Discuz X3.4 X3.5 X5.0登录机制进行匿名穿透访问的防御方法