Discuz!x2防CC攻击设置详细教程

在config_global.php文件中有如下代码

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

可以设置的值有:

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

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

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

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

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

找到source/misc/misc_security.php文件

	if(is_string($this->config['security']['attackevasive'])) {
	//如果$this->config['security']['attackevasive']是字符串
	        $attackevasive_tmp = explode('|', $this->config['security']['attackevasive']);
	        根据分隔符|分割$this->config['security']['attackevasive']得到数组$attackevasive_tmp
	        $attackevasive = 0;
	        foreach($attackevasive_tmp AS $key => $value) {
	                $attackevasive += intval($value);
	                //将数组$attackevasive中每项的值加起来得到$attackevasive
	        }
	        unset($attackevasive_tmp);
	} else {
	        $attackevasive = $this->config['security']['attackevasive'];
	}

	$lastrequest = isset($_G['cookie']['lastrequest']) ? authcode($_G['cookie']['lastrequest'], 'DECODE') : '';

获取上一次请求的时间。
$_G[‘cookie’][‘lastrequest’]为记录上一次请求时间的cookie。

if($attackevasive & 1 || $attackevasive & 4) {
	        dsetcookie('lastrequest', authcode(TIMESTAMP, 'ENCODE'), TIMESTAMP + 816400, 1, true);
	}

如果设置的是cookie刷新限制($attackevasive & 1)或者二次请求($attackevasive & 4)的方式,那么创建以当前时间为值的上一次请求的cookie。

	if($attackevasive & 1) {
	        if(TIMESTAMP - $lastrequest < 1) {
	                securitymessage('attackevasive_1_subject', 'attackevasive_1_message');
	        }
	}

cookie刷新限制的方式:当前时间-上一次请求的时间<1的时候会有页面重载的提示。

	if(($attackevasive & 2) && ($_SERVER['HTTP_X_FORWARDED_FOR'] ||
	        $_SERVER['HTTP_VIA'] || $_SERVER['HTTP_PROXY_CONNECTION'] ||
	        $_SERVER['HTTP_USER_AGENT_VIA'] || $_SERVER['HTTP_CACHE_INFO'] ||
	        $_SERVER['HTTP_PROXY_CONNECTION'])) {
	                securitymessage('attackevasive_2_subject', 'attackevasive_2_message', FALSE);
	}

限制代理访问的方式。

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

二次请求的方式:当前时间-上一次请求时间>300秒的时候会有页面重载的提示。

	if($attackevasive & 8) {
	        list($visitcode, $visitcheck, $visittime) = explode('|', authcode($_G['cookie']['visitcode'], 'DECODE'));
	        if(!$visitcode || !$visitcheck || !$visittime || TIMESTAMP - $visittime > 60 * 60 * 4 ) {
	                if(empty($_POST['secqsubmit']) || ($visitcode != md5($_POST['answer']))) {
	                        $answer = 0;
	                        $question = '';
	                        for ($i = 0; $i< rand(2, 5); $i ++) {
	                                $r = rand(1, 20);
	                                $question .= $question ? ' + '.$r : $r;
	                                $answer += $r;
	                        }
	                        $question .= ' = ?';
	                        dsetcookie('visitcode', authcode(md5($answer).'|0|'.TIMESTAMP, 'ENCODE'), TIMESTAMP + 816400, 1, true);
	                        securitymessage($question, '<input type="text" name="answer" size="8" maxlength="150" /><input type="submit" name="secqsubmit" value=" Submit " />', FALSE, TRUE);
	                } else {
	                        dsetcookie('visitcode', authcode($visitcode.'|1|'.TIMESTAMP, 'ENCODE'), TIMESTAMP + 816400, 1, true);
	                }
	        }
	
	}

回答问题的方式:第一次访问时需要回答问题。

落花生

认准了方向,就要勇敢地走下去,十年磨一剑,我相信,只要坚持,一切都有可能。

相关日志

  1. 没有图片

    2010.09.27

    Outlook 2010 的功能和优点

    Microsoft Outlook 2010…

  2. 没有图片

    2014.09.03

    如何正确地给固态硬盘分区(转)

    如果您正在使用或者准备购买固态硬盘(SSD)…

  3. 2012.08.01

    WordPress主题 X5 正式发布

    现在大家看到的是我的新作品,主题结构来自11…

  4. 2013.12.26

    phpMyAdmin “缺少 mcrypt 扩展。请检查 PHP 配置。”解决办法

    在安装配置phpMyAdmin管理mysql…

  5. 没有图片

    2013.04.28

    WordPress Shortlink 短网址使用教程

    自 WordPress 3.0 之后,就自带…

  6. 没有图片

    2011.04.15

    WordPress日志置顶方法及添加置顶图片标志

    WordPress不知道从哪个版本已经自带了…

评论

  1. 艾奥兹 2018.01.12 9:48上午

    不错,论坛可以避免很多恶意攻击。

  2. 凌乱 2012.06.27 5:22下午

    呃,重复了,记得很早之前李大哥你已经分享过了

About

马拉松运动员,沉迷于跑步;关注科技前沿,关注互联网!与跑者、程序员、设计师为伍,一起跑步健身,一起编写程序,为自由而战!