使用Discuz!自带参数防御CC攻击以及原理,修改Discuz X 开启防CC攻击后,不影响搜索引擎收录的方法

时间:2023-03-08 17:12:09
使用Discuz!自带参数防御CC攻击以及原理,修改Discuz X 开启防CC攻击后,不影响搜索引擎收录的方法

这部份的工作,以前花的时间太少。

希望能产生一定的作用。

http://www.nigesb.com/discuz-cc-attacker-defence.html

http://bbs.zb7.com/thread-8644-1-1.html

CC攻击确实是很蛋疼的一种攻击方式,Discuz!的配置文件中已经有了一个自带的减缓CC攻击的参数,在配置文件config.inc.php中:

1 $attackevasive = 0;             // 论坛防御级别,可防止大量的非正常请求造成的拒绝服务攻击                                  // 防护大量正常请求造成的拒绝服务攻击,

这个参数可以设置的值有:

1 0表示关闭此功能
2 1表示cookie刷新限制
3 2表示限制代理访问
4 4表示二次请求
5 8表示回答问题(第一次访问时需要回答问题)

正常情况下设置为 0,在遭到攻击时,分析其攻击手法和规律,组合使用。 可以尝试先设置为 2, 2|4, 1|2|4|, 1|2|4|8, 如果 1|2|4|8 还不行,应用程序层面上已经抵挡不住,可能主机遭受的攻击来自于僵尸网络的 DDOS 攻击了,建议从防火墙策略上入手。

在source/class/class_core.php文件中可以找到如下代码

1 if($this->config['security']['attackevasive'] && (!defined('CURSCRIPT') || !in_array($this->var['mod'], array('seccode''secqaa''swfupload')))) {
2 require_once libfile('misc/security''include');
3 }

$this->config[‘security’][‘attackevasive’]为config_global.php文件里设置的$_config[‘security’][‘attackevasive’]的值。

~~~~~~~~~~~~~~~~

开启防CC攻击后,会影响搜索引擎蜘蛛的抓取,下面修改后不影响搜索引擎蜘蛛的抓取方法来某网友提供,修改前切记备份好文件。

Discuz X 开启防CC攻击方法,在config_global.php文件中有如下代码:

  1. $_config['security']['attackevasive']        = 0;

复制代码

可以设置的值有:
0表示关闭此功能
1表示cookie刷新限制
2表示限制代理访问
4表示二次请求
8表示回答问题(第一次访问时需要回答问题)

同时也可以设置为组合的方式,如1|2表示同时启用cookie刷新限制和限制代理访问。

不影响搜索引擎蜘蛛的抓取的修改方法,需要修改下面文件:

在source/include/misc/misc_security.php文件中可以找到如下代码(默认第46~50行)

  1. if($attackevasive & 4) {
  2. if(empty($lastrequest) || TIMESTAMP - $lastrequest > 300) {
  3. securitymessage('attackevasive_4_subject', 'attackevasive_4_message');
  4. }
  5. }

复制代码

修改为:

  1. if($attackevasive & 4) {
  2. if(empty($lastrequest) || TIMESTAMP - $lastrequest > 300) {
  3. $kw_spiders        = 'Bot|Crawl|Spider';
  4. // keywords regular expression of search engine spiders
  5. if(preg_match("/($kw_spiders)/i", $_SERVER['HTTP_USER_AGENT'])) {
  6. // match search engine spiders
  7. }else{
  8. securitymessage('attackevasive_4_subject', 'attackevasive_4_message');
  9. }
  10. }

复制代码

修改完成后覆盖,更新缓存即可。修改前切记做好文件备份