织梦dedecms安全设置如何有效防护?

99ANYc3cd6
预计阅读时长 19 分钟
位置: 首页 织梦建站 正文

核心原则:纵深防御

安全不是单一措施就能解决的,而是需要像洋葱一样,层层设防,即使一层被突破,还有其他层在保护你的网站。

织梦dedecms安全设置
(图片来源网络,侵删)

第一部分:基础与核心加固

这是最基本也是最重要的步骤,能防范绝大多数自动化攻击。

修改默认后台路径和账号密码

这是老生常谈,但也是最有效的手段之一。

  • 修改后台目录名

    • 不要使用默认的 /dede/
    • 使用一个复杂、无规律的名称,/myadmin2025xyz//cms-admin-panel/
    • 操作方法:直接在FTP或文件管理器中重命名 /dede 文件夹,然后修改根目录下的 index.php 文件,找到类似 if(file_exists(dirname(__FILE__).'/dede/login.php')) 的代码,将 dede 修改成你的新目录名。
  • 修改管理员用户名和密码

    织梦dedecms安全设置
    (图片来源网络,侵删)
    • 绝对不要使用 admin 作为用户名。
    • 设置一个强密码(包含大小写字母、数字、特殊符号,长度至少12位)。
    • 操作方法:登录后台 -> 系统 -> 用户管理 -> 编辑 admin 用户,修改用户名和密码。
  • 修改数据库连接信息

    • 数据库配置文件位于 /data/common.inc.php
    • 修改其中的 $cfg_dbname$cfg_dbuser$cfg_dbpwd 为你自定义的、复杂的数据库用户名和密码。
    • 修改数据库前缀 $cfg_dbprefix,默认是 dede_,建议修改为随机字符串,如 myweb_

删除或保护安装目录

  • 删除安装目录:网站安装完成后,务必删除 /install/ 目录,这是黑客获取网站信息、甚至直接重装网站的后门。
  • 保护安装目录:如果暂时无法删除(例如需要升级),可以在该目录下创建一个空的 index.html 文件,或者创建一个 index.php 文件,内容为 <?php exit; ?>,防止访问。

文件和目录权限设置

正确的权限是服务器安全的第一道防线。

  • 核心目录权限

    • /data/ 目录:设置为 755 或 750,这个目录存储了数据库配置文件,权限过高非常危险。
    • /include//templets/ 等目录:设置为 755
    • 所有 .php 文件:设置为 644
    • 所有 .html.jpg.css 等静态文件:设置为 644
    • 重要不要将任何目录(特别是 /data/)权限设置为 777,这等于向全世界开放了写入权限,是极其危险的。
  • 如何设置

    织梦dedecms安全设置
    (图片来源网络,侵删)
    • Linux服务器:使用SSH连接,执行 chmod 命令。chmod 755 /data
    • 虚拟主机/Windows服务器:通过FTP客户端(如FileZilla)或主机商提供的文件管理器,右键 -> 文件权限 -> 进行设置。

关闭或删除不必要的模块和插件

  • 进入后台,检查并禁用所有你不需要的模块,如会员系统、问答系统、表单等,每一个多余的模块都可能是一个潜在的攻击入口。
  • 删除 /plus/ 目录下你不需要的文件,如 guestbook.php (留言板), feedback.php (反馈), link.php (友情链接) 等,如果确实需要,确保它们是最新版本且已做安全加固。

第二部分:配置与代码加固

这部分涉及更深入的配置修改和代码层面的防护。

修改 php.ini 配置 (需要服务器权限)

如果你拥有服务器的管理权限,或者在虚拟主机面板中可以修改 php.ini,请进行以下设置:

  • 关闭危险函数

    disable_functions = exec,passthru,shell_exec,system,proc_open,popen,escapeshellcmd,escapeshellarg

    这些函数可以执行系统命令,是Webshell最常用的工具。

  • 设置安全的 open_basedir

    open_basedir = /www/yourwebsitepath/:/tmp/

    将其限制在你的网站目录下,防止脚本访问系统其他敏感文件。

  • 关闭错误信息显示

    display_errors = Off

    防止因代码错误泄露服务器路径等信息。

  • 设置安全时区

    date.timezone = PRC

代码层面安全补丁

织梦官方会定期发布安全补丁,请务必关注官网并及时更新,以下是一些常见的漏洞点及手动修复方法(以旧版本为例,新版本可能已修复):

  • SQL注入漏洞

    • 问题:许多文件没有对用户输入进行严格的过滤。
    • 修复:在 include/common.inc.php 文件的开头,加入一个全局的过滤函数,这是一个通用的防注入代码(请根据实际情况调整):
      // 防止SQL注入
      if (isset($_GET['phpself'])) {
          $_GET['phpself'] = str_replace(array("'", '"', ';', '<', '>'), '', $_GET['phpself']);
      }
      if (isset($_POST['phpself'])) {
          $_POST['phpself'] = str_replace(array("'", '"', ';', '<', '>'), '', $_POST['phpself']);
      }
      // 对所有GET和POST参数进行转义
      if (get_magic_quotes_gpc()) {
          $_GET = stripslashes_array($_GET);
          $_POST = stripslashes_array($_POST);
      }
      function stripslashes_array(&$array) {
          foreach ($array as $key => $value) {
              if (is_array($value)) {
                  stripslashes_array($array[$key]);
              } else {
                  $array[$key] = stripslashes($value);
              }
          }
      }
      $_GET = daddslashes($_GET);
      $_POST = daddslashes($_POST);
      $_COOKIE = daddslashes($_COOKIE);
      function daddslashes($string, $force = 0) {
          if (!get_magic_quotes_gpc() || $force) {
              if (is_array($string)) {
                  foreach ($string as $key => $val) {
                      $string[$key] = daddslashes($val, $force);
                  }
              } else {
                  $string = addslashes($string);
              }
          }
          return $string;
      }
  • XSS跨站脚本漏洞

    • 问题:用户提交的内容(如评论、留言)未经过滤直接输出到页面。
    • 修复:在输出到HTML前,对内容进行转义,使用 htmlspecialchars() 函数。
      echo htmlspecialchars($user_content, ENT_QUOTES, 'UTF-8');
  • 文件上传漏洞

    • 问题:上传文件时没有严格校验文件类型和内容,导致黑客可上传Webshell。
    • 修复
      1. 修改 /dede/media_add.php,找到 $fullfilename = $cfg_basedir.$activepath.'/'.$filename; 之前,增加严格的文件类型和内容检查。
      2. 白名单机制:只允许上传jpg, gif, png, jpeg, zip, rar, pdf, doc, xlsx 等你确实需要的文件类型。
      3. 重命名文件:将上传的文件名随机化,uniqid() . '.jpg',防止黑客利用文件名进行攻击。
      4. 存储目录权限:将上传文件存储的目录(如 /uploads/)设置为 755,确保脚本可写,但不可执行,如果可能,将上传文件存储在网站根目录之外。

第三部分:服务器与运维安全

安装Web应用防火墙

这是最有效、最省心的防御方式。

  • 推荐使用云WAF,如阿里云WAF、腾讯云WAF、Cloudflare等。
  • 作用:它们能自动识别并拦截SQL注入、XSS、文件上传、命令执行等绝大多数攻击,无需你手动修改代码。
  • 对于虚拟主机:许多主机商提供了集成的WAF服务,请在控制面板中开启。

定期备份

这是最后的防线,即使网站被黑,也能快速恢复。

    • 网站程序文件:定期打包 目录(排除缓存和日志目录)。
    • 数据库:通过后台的系统备份功能或phpMyAdmin导出数据库。
  • 备份策略
    • 自动化:使用服务器定时任务(Cron Job)或主机商的备份服务,实现每日/每周自动备份。
    • 异地存储:将备份文件保存到另一个服务器、云存储(如OSS、七牛云)或本地电脑,不要和网站放在同一个服务器上。

定期更新和检查

  • 关注官方:经常访问织梦DedeCMS官网,关注安全公告和版本更新。
  • 更新前备份:在进行任何升级前,务必备份整个网站和数据库。
  • 定期扫描:使用安全工具(如安全狗、河马)或在线扫描服务,定期检查网站是否存在后门或漏洞。

安全检查清单

安全层级 检查项 状态 备注
基础加固 修改后台目录名 使用复杂名称
修改管理员用户名和密码 用户名非admin,密码强
修改数据库前缀和密码 使用随机前缀和强密码
删除/保护 /install/ 目录 安装后必须删除
文件权限 /data/ 目录权限设为755
.php 文件权限设为644
核心目录权限设为755
配置与代码 关闭不用的模块和插件
应用官方安全补丁 定期检查
代码层面防注入/XSS 修改 common.inc.php
严格文件上传校验 白名单、重命名、分离目录
服务器与运维 安装并配置WAF 强烈推荐云WAF
设置定期备份策略 程序+数据库,异地存储
定期检查更新 关注官方动态

安全是一个持续的过程,而不是一次性的任务,养成良好的安全习惯,你的织梦网站才能更加坚不可摧。

-- 展开阅读全文 --
头像
织梦index of a泄露了什么隐藏信息?
« 上一篇 01-02
dede如何删除添加的全局变量
下一篇 » 01-02

相关文章

取消
微信二维码
支付宝二维码

目录[+]