DZ论坛开启防御后过滤搜索蜘蛛和白名单IP的方法

网络整理 - 08-10
针对Discuz!论坛在受到攻击开启论坛防御后,搜索引擎的蜘蛛也会要求进行安全防御及验证,影响搜索引擎收录及某些特定白名单IP不需要受攻击防御限制的情况而发布以下方法,希望对开启了防御的论坛有一定作用:

1、修改config.inc.php配置文件,查找:

$admincp = array();



在其上面一行加入以下代码:

$skipattackeip = array('127.0.0.1','111.111.111.111','222.222.222.222');//白名单IP,IP用单引号引用起来,每个IP之间用逗号隔开



2、修改include目录下的common.inc.php文件,找到如下代码:

if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
        $onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
        $onlineip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
        $onlineip = $_SERVER['REMOTE_ADDR'];
}



将这段代码剪切后粘贴到下面代码所在行的上面:

if($attackevasive && CURSCRIPT != 'seccode')



3、修改common.inc.php文件,将:

if($attackevasive && CURSCRIPT != 'seccode')



代码修改为:

if($attackevasive && CURSCRIPT != 'seccode' && !IS_ROBOT && !in_array($onlineip, $skipattackeip))



4、保存修改的以上文件就完成开启论坛防御后过滤蜘蛛和白名单的IP地址不进行安全防御及验证了。

原创 BY 落伍 小勤 xqin.com QQ:841168 2009-4-11,版权归本人所有,拒绝盗用于商业途径。