当前位置: 首页 > 图文教程 > 网站运营 > 建站经验 > 从PHP安全讲DedeCms的安全加固

建站经验
推广经验 利用QQ推广网站的方法
google 恶意软件网站 警告后 怎么办
站长浅谈 运营网站切勿盲目跟风
远离垃圾站 做一个有用的站 让人们需要你
站长想把网站做好需要专心
让百度蜘蛛认为你的网站是一个好网站
企业网站 建设目标分析
问答推广的实施步骤与问答推广方法和技巧
SEO B2B行业网站优化经验
搜索引擎算法调整和被搜索引擎惩罚的解决方法
选择不知名网站源码来建站选择技巧
digg 创始人经验分享 发展网站用户的9个方法
智能查询域名的10个国外网站
成功网站的法则 简单的直击人最基本需求
网站 邀请机制的使用说明
成功网站=充实的内容+勤奋的站长+运气
网站内容的主动组织和展示技巧
百度K站和降权原因大收集 看看你占了哪一条
网络媒体 让资讯与服务融为一体
网站运营 SNS社区产品设计思想

建站经验 中的 从PHP安全讲DedeCms的安全加固


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 136 ::
收藏到网摘: n/a

DedeCms做为国内使用最为广泛使用人数最多的CMS之一,经常爆出漏洞,每个漏洞的爆出,影响都是一大片,轻则被人挂广告、弹框,重则服务器成为肉机,宝贵数据丢失。那么有什么办法可以提高DedeCms的安全性呢?

先来看看原因吧,为什么PHP程序经常出漏洞,其实是由PHP程序本身决定的。PHP可复用性低,导致程序结构错综复杂,到处是冗余代码,这样不仅利于漏洞的产生,还影响漏洞的修得;PHP程序入门简单且普遍开源,导致很多人都可直接阅读代码,搜寻漏洞;这样便有源源不断的漏洞被发现、被修复、被发现……。而当前流行的PHP系统习惯用以文件形式做为缓存,这样就需要开放文件的写权限,这无疑成为PHP系统的软肋。目前针对PHP系统的攻击方式,除了已经很少出现的“注入”攻击外,大部分攻击都是通过系统的某个漏洞,向可写文件里插入一句话木马,以此方式获得shell。

网站安全从来都是服务器配置、文件权限控制和网站程序三者的相互配合,今天主要看看如果对DedeCms网站程序的改进来提高安全性。“可执行的文件不允许被修改,可写文件不允许被访问”这是网站权限控制的根本原则,网站程序在“可写文件不允许被访问”方面可做许多工作。就拿DedeCMS来说,我们可以在如下几个方式做好保护。

1、改名根目录下的data目录,或者移动到网站目录外面

data目录便是最藏污纳垢的地方,系统经常要往这个目录写数据,这个目录下的任何一个文件又都可以通过URL访问到,所以要让浏览器访问不到里面的文件,就需要将此目录改名,或者移动到网站的目录外面去。这些,即使别人通过漏洞往文件里写进了一句话木马,他也找不到此木马所在的文件路径,无法继续展开攻击。因为DedeCMS程序的不合理,导致改名data目录动作会比较大,具体做法如下:

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

b. 修改引用程序目录

搜索替换“DEDEDATA.“/data/” 为 “DEDEDATA.”/”,大概替换五六十个地方;

搜索替换“DEDEDATA.‘/data/” 为 “DEDEDATA.’/”,大概替换五六十个地方;

搜索“/data/”,按具体情况,修改路径类似成为:“$DEDEDATA.“/”(注意include目录和后台管理目录都有data文件夹,不需要修改);

c. 修改data文件夹名称,并修改include/common.inc.php文件里的“DEDEDATA”的值,再在后台系统设置》参数设置里修改模板缓存目录,即可修改完成。以后也可以按照此步骤来更改data文件夹名称。

2、改名“dede”管理目录,并加固

如果把后台隐藏好了,即使别人获得了你的管理员账号、密码,他也无从登录。

a.在/dede/config.php里,找到如下行:

以下为引用的内容:

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

 

把上面代码,改为:

以下为引用的内容:

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

 

b.修改/dede/login.php的文件名称,并对应的修改/dede/templets/login.htm里的表单提交地址;

c.修改/dede/的目录名称;

这样,别人在没有登录前,只能访问/dede/login.php改名后的地址,访问其他地址均会获得404错误。

当然,做了安全加固后,以后DedeCMS的升级就会有一些麻烦。

原文地址:http://www.cnblogs.com/flashlm/archive/2009/09/26/dedecms-security-reinforced.html