在使用Dedecms CMS并将网站托管在阿里云ECS上的站长们,经常会遇到阿里云盾发出的上传漏洞警告。这个漏洞通常与/include/uploadsafe.inc.php文件有关。

问题的核心在于Dedecms原生提供了一个“本地变量注册”的模拟实现功能。这一功能理论上允许攻击者覆盖任意变量,从而导致系统被攻击。为了解决这个问题,我们需要对代码进行适当的修改。

首先,找到并打开/include/uploadsafe.inc.php文件。在该文件中定位到以下代码:

if(empty(${$_key.'_size'}))
{
    ${$_key.'_size'} = @filesize($$_key);
}
    

接下来,在上述代码之后添加以下内容,以增强文件类型的安全性检查:

$imtypes = array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp", "image/bmp");
if(in_array(strtolower(trim(${$_key.'_type'})), $imtypes)){
    $image_dd = @getimagesize($$_key); 
    if($image_dd == false){
        continue;
    }
    if (!is_array($image_dd)) {
        exit('Upload filetype not allow !');
    }
}
    

通过以上修改,我们增加了对图片类型的严格验证。只有符合指定类型的文件才能成功上传,这大大降低了恶意文件上传的风险。

此外,为了确保更高的安全性,建议定期更新Dedecms至最新版本,并关注官方发布的安全补丁。同时,也可以考虑启用阿里云提供的其他安全防护措施,如Web应用防火墙(WAF),进一步加强站点防护能力。

总之,通过对关键文件的代码调整以及采取综合性的安全策略,可以有效减少Dedecms在阿里云环境中可能遭遇的安全威胁,保障网站的稳定运行。记得每次修改完代码后,测试网站功能是否正常,以确保改动没有引入新的问题。