织梦DEDECMS安全防护设置及漏洞修复

一、程序一定要从织梦官网下载,其他地方下载的不能保证安全。

二、下载后的程序在正常运行后,要删除下列文件夹(根据你的需要选择删除)。

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 找到(dede是你网站管理后台目录名称)

$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){

大约在67行,把它替换为

if(!isset($token) || strcasecmp($token, $_SESSION['token']) !== 0){

五、利用伪静态功能禁止以下目录运行php脚本

apache环境

RewriteEngine on
#安全设置 禁止以下目录运行指定php脚本
RewriteCond % !^$
RewriteRule a/(.*).(php)$ – [F]
RewriteRule data/(.*).(php)$ – [F]
RewriteRule templets/(.*).(php|htm)$ – [F]
RewriteRule uploads/(.*).(php)$ – [F]

iis环境

<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>

Nginx环境

这段配置代码一定要放在 location ~ .php(.*)$ 的前面才可以生效,配置完后记得重启Nginx生效。

location ~* /(a|data|templets|uploads|images)/(.*).(php)$ {
	return 403;
}

宝塔面板在配置文件里面。加在红框上面即可。如下图在这里插入图片描述
给所有站加上的话。请打开下面路径,根据你的PHP版本找到相应的文件。我这里是5.4版本的。
在这里插入图片描述
在最上面添加上面代码,然后重启服务。亲测有效。
在这里插入图片描述
检测设置成功的方法,新建一个随意内容的php文件放到a|data|templets|uploads任意文件夹,如果访问出现4.3错误,说明设置正常。如果显示你刚才设置的内容,刚是失败。按步骤好好检测一下看看是不是设置错误。

六、防止后台登录路径被爆

网上有一个爆网站后台的方法:就是访问/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;
}

七、增加XSS跨站、SQL注入防护代码

将代码添加到\data\common.inc.php这个文件或者是你想防护的页面即可。
注意:添加后可能导致写文章不能写包含php、sql入驻等代码,比较鸡肋。

function gjj($str)
{
    $farr = array(
        "/\\s+/",
        "/]*?)>/isU",
        "/(]*)on[a-zA-Z]+\s*=([^>]*>)/isU",
    );
    $str = preg_replace($farr,"",$str);
    return addslashes($str);
}
function hg_input_bb($array)
{
    if (is_array($array))
    {
        foreach($array AS $k => $v)
        {
            $array[$k] = hg_input_bb($v);
        }
    }
    else
    {
        $array = gjj($array);
    }
    return $array;
}
$_REQUEST = hg_input_bb($_REQUEST);
$_GET = hg_input_bb($_GET);
$_POST = hg_input_bb($_POST);
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值