设为首页 收藏本站
查看: 1332|回复: 0

[经验分享] 从PHP安全讲DedeCms的安全加固

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-23 13:12:15 | 显示全部楼层 |阅读模式
DedeCms做为国内使用最为广泛使用人数最多的CMS之一,经常爆出漏洞,每个漏洞的爆出,影响都是一大片,轻则被人挂广告、弹框,重则服务器成为肉机,宝贵数据丢失。那么有什么办法可以提高DedeCms的安全性呢?
先来看看原因吧,为什么PHP程序经常出漏洞,其实是由PHP程序本身决定的。PHP可复用性低,导致程序结构错综复杂,到处是冗余代码,这样不仅利于漏洞的产生,还影响漏洞的修得;PHP程序入门简单且普遍开源,导致很多人都可直接阅读代码,搜寻漏洞;这样便有源源不断的漏洞被发现、被修复、被发现……。而当前流行的PHP系统习惯用以文件形式做为缓存,这样就需要开放文件的写权限,这无疑成为PHP系统的软肋。目前针对PHP系统的攻击方式,除了已经很少出现的“注入”攻击外,大部分攻击都是通过系统的某个漏洞,向可写文件里插入一句话木马,以此方式获得shell。
网站安全从来都是服务器配置、文件权限控制和网站程序三者的相互配合,今天主要看看如果对DedeCms网站程序的改进来提高安全性。“可执行的文件不允许被修改,可写文件不允许被访问”这是网站权限控制的根本原则,网站程序在“可写文件不允许被访问”方面可做许多工作。就拿DedeCMS来说,我们可以在如下几个方式做好保护。(以下说明在DEDE V55_UTF8版本实现正常,其他版本未作测试)
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 DSC0000.gif //检验用户登录状态
2$cuserLogin = new userLogin();
3if($cuserLogin->getUserID()==-1)
4{
5    header("location:login.php?gotopage=".urlencode($dedeNowurl));
6}
把上面代码,改为:

1//检验用户登录状态
2$cuserLogin = new userLogin();
3if($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的升级就会有一些麻烦

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-102989-1-1.html 上篇帖子: 10位顶级PHP大师的开发原则 下篇帖子: 微信公众平台消息接口开发(2)-封装weixin.class.php
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表