织梦DedeCMS安全防护设置及漏洞修复
程序尽量从织梦官网下载,其他地方下载的不能保证安全。
安装dede程序在正常运行后,要删除不必要的文件
(根据你的需要选择删除)
member 会员文件夹整个删除
special 专题文件夹整个删除
install 安装文件夹整个删除
robots.txt 文件删除
删除 /templets/default 官方默认模板这个文件夹(在你自己有模板的情况下,如果没有,请勿删除)
删除PLUS文件夹除下列文件外的所有文件,保留下面几个文件
/plus/img (文件夹)
/plus/count.php
/plus/diy.php
/plus/list.php
/plus/search.php
/plus/view.php
修改默认后台管理目录名称,安装时不要用默认的admin当管理员帐号及密码。
修复织梦已知漏洞
打开 /include/dialog/select_soft_post.php 搜索
$fullfilename = $cfg_basedir.$activepath.'/'.$filename;
在它上面加入
if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))) {
ShowMsg("你指定的文件名被系统禁止!",'javascript:;');
exit();
}
打开 /dede/media_add.php
找到
$fullfilename = $cfg_basedir.$filename;
在它上面加入
if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))){
ShowMsg("你指定的文件名被系统禁止!",'java script:;');
exit();
}
打开/dede/config.php
找到
if(!isset($token) || strcasecmp($token, $_SESSION['token']) != 0){
替换为
if(!isset($token) || strcasecmp($token, $_SESSION['token']) !== 0){
利用伪静态功能禁止以下目录运行php脚本
apache环境
复制下面代码放到根目录 .htaccess
文件下
RewriteEngine on
#安全设置 禁止以下目录运行指定php脚本
RewriteCond % !^$
RewriteRule a/(.*).(php)$ – [F]
RewriteRule data/(.*).(php)$ – [F]
RewriteRule templets/(.*).(php|htm)$ – [F]
RewriteRule uploads/(.*).(php)$ – [F]
Nginx环境
这段配置代码一定要放在 location ~ .php(.*)$
的前面才可以生效,配置完后记得重启Nginx生效。
location ~* /(a|data|templets|uploads|images)/(.*).(php)$ {
return 403;
}
iis环境
windows主机的用户一般都是iis7、iis8环境,使用 web.config 文件来设置,请确认你的主机已经开启了伪静态而且网站根目录有 web.config 文件,复制以下代码添加到对应的rules内.
<rule name="Block data" stopProcessing="true">
<match url="^data/(.*).php$" />
<conditions logicalGrouping="MatchAny">
<add input="{USER_AGENT}" pattern="data" />
<add input="{REMOTE_ADDR}" pattern="" />
</conditions>
<action type="AbortRequest" />
</rule>
<rule name="Block templets" stopProcessing="true">
<match url="^templets/(.*).php$" />
<conditions logicalGrouping="MatchAny">
<add input="{USER_AGENT}" pattern="templets" />
<add input="{REMOTE_ADDR}" pattern="" />
</conditions>
<action type="AbortRequest" />
</rule>
<rule name="Block SomeRobot" stopProcessing="true">
<match url="^uploads/(.*).php$" />
<conditions logicalGrouping="MatchAny">
<add input="{USER_AGENT}" pattern="SomeRobot" />
<add input="{REMOTE_ADDR}" pattern="" />
</conditions>
<action type="AbortRequest" />
</rule>
其他防护
网站上有一个爆网站后台的方法:就是访问/data/mysql_error_trace.inc或者/data/mysqli_error_trace.inc,分析里面的代码来爆网站后台。可在伪静态配置文件里加入下面代码即可,这是nginx下的配置文件,亲测有效,其他运行环境自行转换
location /data {
rewrite ^/data\/(.*)$ /404.html;
}
这样,用户访问data的文件全都会提示404错误。亲测有效!
我们也可以关闭这个生成这个文件,打开 /include/dedesql.class.php
找到
//保存MySql错误日志
$fp = @fopen($errorTrackFile, 'a');
@fwrite($fp, '<'.'?php exit();'."\r\n/*\r\n{$savemsg}\r\n*/\r\n?".">\r\n");
@fclose($fp);
这几行删除就行了,如果你的 data 文件夹里面有 mysql_error_trace.inc 文件,记得删除它。
同理我们还可以设置禁止访问plus|templets|uploads
等目录
location /plus {
rewrite ^/plus\/(\w+)\.php(.*)$ /404.html;
}
location /templets {
rewrite ^/templets/(.*)/(.*).htm$ /404.html;
}
location /uploads {
rewrite ^/uploads\/(\w+)\.php(.*)$ /404.html;
}
织梦修复精简版
最后分享一个精简版的织梦DedeCMS(出自Dedehtml
之手),基于官方版精简掉不常用功能减少注入,修复织梦程序包里已知漏洞和BUG。
添加新评论