为了提升Dedecms CMS的安全性,建议手动对config_base.php文件进行修改。以下是具体的操作步骤和代码调整方法。

首先,打开您的Dedecms安装目录下的config_base.php文件。

接下来,找到以下代码段:


//禁止用户提交某些特殊变量
$ckvs = Array('_GET','_POST','_COOKIE','_FILES');
foreach($ckvs as $ckv){
  if(is_array($$ckv)){
    foreach($$ckv AS $key => $value)
      if(eregi("^(cfg_|globals)",$key)) unset(${$ckv}[$key]);
  }
}

将上述代码替换为以下内容:


//把get、post、cookie里的<? 替换成 <?
$ckvs = Array('_GET','_POST','_COOKIE');
foreach($ckvs as $ckv){
  if(is_array($$ckv)){
    foreach($$ckv AS $key => $value)
      if(!empty($value)){
        ${$ckv}[$key] = str_replace('<'. '?', '&'. 'lt;'. '?', $value);
        ${$ckv}[$key] = str_replace('?' . '>', '?' . '&'. 'gt;', ${$ckv}[$key]);
      }
      if(eregi("^cfg_|globals",$key)) unset(${$ckv}[$key]);
  }
}

//检测上传的文件中是否有PHP代码,有直接退出处理
if (is_array($_FILES)) {
  foreach($_FILES AS $name => $value){
    ${$name} = $value['tmp_name'];
    $fp = @fopen(${$name},'r');
    $fstr = @fread($fp,filesize(${$name}));
    @fclose($fp);
    if($fstr!='' && ereg("<\\\\?",$fstr)){
      echo "你上传的文件中含有危险内容,程序终止处理!";
      exit();
    }
  }
}

这段代码的主要功能是:
1. 防止用户通过GET、POST或COOKIE提交含有恶意PHP代码的内容。
2. 将输入中的<?替换为安全的HTML实体形式&lt;?,避免潜在的代码注入风险。
3. 检测上传文件是否包含PHP代码片段(如<?<?php),如果发现则终止程序运行并提示错误信息。

通过这些修改,可以显著提高Dedecms网站的安全性,防止恶意攻击者利用输入漏洞执行非法操作。请确保在修改前备份原始文件,以便在出现问题时能够迅速恢复。

希望这篇教程对您有所帮助!如果您有任何疑问,请随时留言咨询。


注意:以上代码示例仅适用于特定版本的Dedecms,请根据实际需求进行调整和测试。