找回密码
 立即注册
搜索
查看: 409|回复: 2

[源代码] dzx安全相关

[复制链接]
发表于 2023-9-14 15:48 | 显示全部楼层 |阅读模式

UCenter防止恶意访问(安全加固):

功能说明:uc_server/consoler.php是ucenter默认的后台地址,正常情况下可以直接访问,为了防止某些恶意访问的情况,可以修改以下内容进行安全性能提升。
适用版本:Discuz!x1-x3.4适用情况:ucenter在论坛根目录下
修改后效果:未登录Discuz论坛或不在指定的管理组,打开uc_server/consoler.php提示404
原帖地址:https://www.discuzlab.com/thread/56805
具体实施方案:
打开uc_server/model/admin.php
搜索
$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;
在下面加入以下代码

if(!$this->cookie_status){
    include UC_ROOT.'../config/config_global.php';
    $cookiepre = $_config['cookie']['cookiepre'].substr(md5($_config['cookie']['cookiepath'].'|'.$_config['cookie']['cookiedomain']), 0, 4).'_';
    $auth = addslashes($_COOKIE[$cookiepre.'auth']);
    if(empty($_config['cookie']['saltkey'])) {
       $_config['cookie']['saltkey'] = addslashes($_COOKIE[$cookiepre.'saltkey']);
    }
    $authkey = md5($_config['security']['authkey'].$_config['cookie']['saltkey']);
    $auth = daddslashes(explode("\t", $this->dauthcode($auth, 'DECODE',$authkey)));
    list($discuz_pw, $discuz_uid) = empty($auth) || count($auth) < 2 ? array('', '') : $auth;
    $discuz_uid = intval($discuz_uid);
    $groupid = $this->db->result_first("SELECT groupid FROM ".$_config['db'][1]['tablepre']."common_member WHERE uid='$discuz_uid'");
    if(!in_array($groupid,array('1','2'))){
       header("HTTP/1.1 404 Not Found");header("Status: 404 Not Found");exit;
    }
}

其中这里增加用户组:
array('1','2')
搜索
function __construct() {
   $this->adminbase();
}
后面加入
function dauthcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
   $ckey_length = 4;
   $key = md5($key );
   $keya = md5(substr($key, 0, 16));
   $keyb = md5(substr($key, 16, 16));
   $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';

   $cryptkey = $keya.md5($keya.$keyc);
   $key_length = strlen($cryptkey);

   $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
   $string_length = strlen($string);

   $result = '';
   $box = range(0, 255);

   $rndkey = array();
   for($i = 0; $i <= 255; $i++) {
     $rndkey[$i] = ord($cryptkey[$i % $key_length]);
   }

   for($j = $i = 0; $i < 256; $i++) {
     $j = ($j + $box[$i] + $rndkey[$i]) % 256;
     $tmp = $box[$i];
     $box[$i] = $box[$j];
     $box[$j] = $tmp;
   }

   for($a = $j = $i = 0; $i < $string_length; $i++) {
     $a = ($a + 1) % 256;
     $j = ($j + $box[$a]) % 256;
     $tmp = $box[$a];
     $box[$a] = $box[$j];
     $box[$j] = $tmp;
     $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
   }

   if($operation == 'DECODE') {
     if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
       return substr($result, 26);
     } else {
        return '';
     }
   } else {
      return $keyc.str_replace('=', '', base64_encode($result));
   }
}

修改好的下载地址:https://www.discuzlab.com/thread-56805-1-1.html
 楼主| 发表于 2024-3-19 17:34 | 显示全部楼层

dzx开启防CC攻击

在discuz的config/config_global.php配置文件中可以配置attackevasive参数开启CC 攻击防御
$_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 攻击了,建议从防火墙策略上入手。
由于此项配置是针对所有访问者的,隐藏一旦发生误判将会影响网站的访问性,以及影响搜索引擎的抓取!
dz开启防攻击
好长一段时间,服务器CPU占用一直在100%,重装系统开始几天正常,过几天就又不正常了,安装服务器安全狗,网络安全狗,均没有效果,$_config['security']['attackevasive'] = '4';  //2|4|8,设置为1和2问题依旧,只有设置为4和8服务器的CPU占用才正常,10%——20%,这个问题除了设置4或8以外,有无其它方法可防?因为设置为4,某些插件不能正常运行,设置为8用户嫌麻烦,影响使用体验。

源文地址:https://www.dismall.com/thread-21436-1-1.html

本帖子中包含更多资源

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

×
 楼主| 发表于 2024-3-20 10:31 | 显示全部楼层

最最最重要的一点安全

1、论坛可写目录(data、source/plugin、uc_server/data、uc_client/data、config[此目录在安装论坛时必须可写])外,其它目录均不能有写入权限
2、data、uc_server/data、uc_client/data目录禁止运行php文件(需要nginx配合)
3、防跨站:open_basedir=/www/wwwroot/网站目录/:/tmp/
4、验证码也换成中文的吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|学习笔记

GMT+8, 2024-12-21 21:28 , Processed in 0.023814 second(s), 14 queries , APCu On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表