Holmesian Blog

DeDeCMS安全加固

DedeCms 作为国内使用最为广泛且用户数量众多的 CMS 之一,经常出现漏洞。每当漏洞被曝光,其影响范围都很广,轻则可能会被他人挂上广告、弹出窗口,重则服务器会沦为肉机,导致宝贵数据丢失。那么,如何提高 DedeCms 的安全性呢?

首先,让我们来看看原因。PHP 程序经常出现漏洞,这实际上是由 PHP 程序本身的特性所决定的。PHP 的可复用性较低,这使得程序结构复杂,代码冗余严重,不仅容易产生漏洞,而且不利于漏洞的修复。此外,PHP 程序入门简单,而且普遍开源,这让很多人可以直接阅读代码,寻找漏洞,于是便出现了漏洞被不断发现、修复,然后又被发现的循环。并且,当前流行的 PHP 系统通常以文件形式作为缓存,这就需要开放文件的写权限,这无疑是 PHP 系统的一个弱点。目前针对 PHP 系统的攻击方式,除了已经较少出现的“注入”攻击外,大部分是通过系统的某个漏洞,向可写文件中插入一句话木马,进而获取 shell。

网站的安全实际上是服务器配置、文件权限控制和网站程序三者相互配合的结果。今天我们主要探讨如何对 DedeCms 网站程序进行改进以提高安全性。“可执行文件不允许被修改,可写文件不允许被访问”是网站权限控制的基本原则,网站程序在“可写文件不允许被访问”方面可以采取多种措施。以 DedeCMS 为例,我们可以通过以下几种方式来做好保护:

一、对 data 目录的处理

data 目录是最容易滋生问题的地方,因为系统经常需要向该目录写入数据,并且该目录下的任何文件都可以通过 URL 访问。为了防止浏览器访问到里面的文件,我们可以对其进行如下操作:

(一)更改目录位置或名称

将根目录下的 data 目录改名,或者将其移动到网站目录之外。这样,即使有人通过漏洞将一句话木马写入文件,也难以找到该木马所在的文件路径,从而无法继续展开攻击。由于 DedeCMS 程序的一些特性,更改 data 目录的操作可能会比较复杂,具体步骤如下:

(二)迁移公开内容

将公开的内容迁移到 pub 目录(或其他自定义目录)下,例如 rss、sitemap、js、enum 等。此步骤需要移动相应文件夹,并修改这些文件的生成路径。

(三)修改引用程序目录

二、修改管理目录名称

对“dede”管理目录进行改名,可以增强安全性。因为如果将后台隐藏好,即便别人获取了管理员账号和密码,也无法登录。

(一)修改登录验证逻辑

在 /dede/config.php 中,找到以下代码:

//检验用户登录状态
$cuserLogin = new userLogin();
if($cuserLogin->getUserID()==-1)
{
    header("location:login.php?gotopage=".urlencode($dedeNowurl));
}

将其修改为:

//检验用户登录状态
$cuserLogin = new userLogin();
if($cuserLogin->getUserID()==-1)
{
    //header("location:login.php?gotopage=".urlencode($dedeNowurl));
    header("HTTP/1.0 404 Not Found");
    exit();
}

(二)修改登录文件名称和表单提交地址

这样一来,在未登录时,用户只能访问 /dede/login.php 改名后的地址,访问其他地址将收到 404 错误。

不过需要注意的是,进行了上述安全加固操作后,以后对 DedeCMS 的升级会变得相对麻烦。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »