·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

Discuz!修改相关文件防御CC攻击机制

1098 2
发表于 2021-2-22 21:53:06 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在discuz的config/config_global.php配置文件中可以配置attackevasive参数开启CC 攻击防御
  1. $_config['security']['attackevasive'] = 0;                // CC 攻击防御 1|2|4|8
复制代码
当你的站点发现被CC攻击时,你也可以在config中打开CC攻击防御,该防御有1/2/4/8四种防御方式,每个数字的意义为:
0表示关闭此功能
1表示cookie刷新限制
2表示限制代理访问
4表示二次请求
8表示回答问题(第一次访问时需要回答问题)
正常情况下设置为 0,在遭到攻击时,分析其攻击手法和规律,组合使用。 可以尝试先设置为 2, 2|4, 1|2|4|, 1|2|4|8, 如果 1|2|4|8 还不行,应用程序层面上已经抵挡不住,可能主机遭受的攻击来自于僵尸网络的 DDOS 攻击了,建议从防火墙策略上入手。
由于此项配置是针对所有访问者的,隐藏一旦发生误判将会影响网站的访问性,以及影响搜索引擎的抓取!
本文通过修改discuz文件,实现忽略指定ip段和搜索引擎不受此安全策略影响!
1、修改文件  

2、修改方法
我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

独家记忆Lv.8 发表于 2021-2-22 21:53:14 | 查看全部
1024这牛逼了吗,都有专门的推官员了
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-18 02:03:18 | 查看全部
在Discuz!中,`attackevasive`参数确实可以用来防御CC攻击,但正如你所提到的,这个配置是针对所有访问者的,可能会影响到正常的用户和搜索引擎的抓取。为了避免这种情况,我们可以通过修改Discuz!的源代码来实现忽略指定IP段和搜索引擎的访问,使其不受`attackevasive`参数的影响。

### 1. 修改文件
我们需要修改的文件是 `source/class/discuz/discuz_application.php`,这是Discuz!的核心文件之一,负责处理请求和响应。

### 2. 修改方法
我们可以通过以下步骤来实现忽略指定IP段和搜索引擎的访问:

#### 2.1 打开 `source/class/discuz/discuz_application.php` 文件
找到以下代码段:

  1. if($this->var['config']['security']['attackevasive'] && !$this->init_var['mobile']) {
  2.     require_once libfile('misc/security', 'include');
  3.     security::attackevasive($this->var['config']['security']['attackevasive']);
  4. }
复制代码


#### 2.2 修改代码
在调用 `security::attackevasive` 之前,添加一个条件判断,忽略指定IP段和搜索引擎的访问。修改后的代码如下:

  1. if($this->var['config']['security']['attackevasive'] && !$this->init_var['mobile']) {
  2.     // 获取客户端IP
  3.     $client_ip = $this->var['clientip'];
  4.    
  5.     // 定义忽略的IP段和搜索引擎的User-Agent
  6.     $ignored_ips = array('192.168.1.0/24', '10.0.0.0/8'); // 你可以根据需要修改这些IP段
  7.     $ignored_user_agents = array('Googlebot', 'Baiduspider', 'bingbot', 'YandexBot'); // 你可以根据需要添加更多的搜索引擎User-Agent
  8.    
  9.     // 检查客户端IP是否在忽略的IP段中
  10.     $ignore_ip = false;
  11.     foreach ($ignored_ips as $ip_range) {
  12.         if (ip_in_range($client_ip, $ip_range)) {
  13.             $ignore_ip = true;
  14.             break;
  15.         }
  16.     }
  17.    
  18.     // 检查User-Agent是否为搜索引擎
  19.     $ignore_user_agent = false;
  20.     $user_agent = $_SERVER['HTTP_USER_AGENT'];
  21.     foreach ($ignored_user_agents as $agent) {
  22.         if (strpos($user_agent, $agent) !== false) {
  23.             $ignore_user_agent = true;
  24.             break;
  25.         }
  26.     }
  27.    
  28.     // 如果IP或User-Agent在忽略列表中,则不启用CC攻击防御
  29.     if (!$ignore_ip && !$ignore_user_agent) {
  30.         require_once libfile('misc/security', 'include');
  31.         security::attackevasive($this->var['config']['security']['attackevasive']);
  32.     }
  33. }
复制代码


#### 2.3 添加 `ip_in_range` 函数
为了判断IP是否在指定的IP段中,我们需要添加一个 `ip_in_range` 函数。你可以在 `source/class/discuz/discuz_application.php` 文件的顶部添加以下代码:

  1. function ip_in_range($ip, $range) {
  2.     if (strpos($range, '/') === false) {
  3.         $range .= '/32';
  4.     }
  5.     list($range, $netmask) = explode('/', $range, 2);
  6.     $range_decimal = ip2long($range);
  7.     $ip_decimal = ip2long($ip);
  8.     $wildcard_decimal = pow(2, (32 - $netmask)) - 1;
  9.     $netmask_decimal = ~ $wildcard_decimal;
  10.     return (($ip_decimal & $netmask_decimal) == ($range_decimal & $netmask_decimal));
  11. }
复制代码


### 3. 保存并测试
保存修改后的文件,并上传到服务器。然后你可以通过访问网站并检查日志来确认修改是否生效。

### 4. 注意事项
- 修改核心文件可能会影响Discuz!的升级,因此在升级时需要特别注意,可能需要重新应用这些修改。
- 如果你不确定如何修改,建议在修改前备份文件,并在测试环境中进行测试。

通过以上步骤,你可以实现忽略指定IP段和搜索引擎的访问,使其不受`attackevasive`参数的影响,从而避免误判和影响正常用户的访问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.141.46.77,GMT+8, 2025-3-26 08:17 , Processed in 0.823678 second(s), 78 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表