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 等。此步骤需要移动相应文件夹,并修改这些文件的生成路径。
(三)修改引用程序目录
- 搜索并替换“DEDEDATA."/data/”为“DEDEDATA."/”,大约需要替换五六十处。
- 搜索“/data/”,根据具体情况,将路径修改为类似“$DEDEDATA."/”(注意 include 目录和后台管理目录中的 data 文件夹不需要修改)。
- 更改 data 文件夹的名称,并修改 include/common.inc.php 文件中“DEDEDATA”的值,然后在后台系统设置 > 参数设置中修改模板缓存目录,这样就完成了修改。以后也可以按照此步骤来更改 data 文件夹的名称。
二、修改管理目录名称
对“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 的文件名称,并相应地修改 /dede/templets/login.htm 里的表单提交地址。
- 修改 /dede/ 的目录名称。
这样一来,在未登录时,用户只能访问 /dede/login.php 改名后的地址,访问其他地址将收到 404 错误。
不过需要注意的是,进行了上述安全加固操作后,以后对 DedeCMS 的升级会变得相对麻烦。
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »