后台安全加固

织梦后台https跳转设置

前台做了 HTTPS 改造,后台还残留 http 访问,会导致登录状态丢失、Cookie 被浏览器拦截、甚至账号密码在传输中被嗅探。后台强制 HTTPS 是站点安全的基本要求。本文说明织梦后台 https 跳转的配置方法及常见登录异常排查。

一、后台不强制 https 的风险

  • Cookie 劫持 —— http 传输的 Cookie 明文可被中间人截获,拿到登录态
  • 账号泄露 —— 登录POST的账号密码在 http 下明文传输
  • 混合内容 —— 前台 https,后台 http,浏览器会拦截后台加载的前台 https 资源
  • 登录态丢失 —— https 前台跳 http 后台,Cookie 的 Secure 标志导致不传递

二、第一步:修改后台登录链接

织梦后台默认入口是 /dede/login.php。确保所有入口都走 https:

  • 站点后台书签地址改成 https://www.xxx.com/dede/
  • 如果后台目录改名(如改成 /admin888/),书签同步更新
  • 前台模板里如果有“管理登录”链接,改成 https 开头

但仅改链接不够,用户输入 http 仍能访问后台,必须强制跳转。

三、第二步:Web 服务器强制后台 https 跳转

nginx 配置

# 后台目录强制 https
server {
    listen 80;
    server_name www.xxx.com;
    
    # 后台目录跳转
    location /dede/ {
        return 301 https://$host$request_uri;
    }
    
    # 其他正常处理
    location / {
        # ... 原配置
    }
}

如果后台目录改名,把 /dede/ 换成实际目录名。

apache 配置(.htaccess)

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/dede/ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

放在站点根目录的 .htaccess 里,只对后台目录生效,不影响前台。

四、第三步:后台 Cookie 加 Secure 标志

Cookie 加 Secure 标志后,只在 https 下传输,http 下不发送,防止泄露。织梦 Cookie 设置在 /include/common.inc.php

// 找到 session_start 附近,加 session cookie 参数
session_set_cookie_params([
    'lifetime'=> 0,
    'path'=> '/',
    'secure'=> true,      // 只在 https 传输
    'httponly'=> true,      // JS 不可读,防 XSS
    'samesite'=> 'Lax'      // 防 CSRF
]);
session_start();
开启 Secure 前必须确认后台已完全 https 化,否则 http 访问后台会因 Cookie 不传递而无法登录。

五、第四步:后台目录改名加固

默认 /dede/ 目录太容易被猜到,建议改名:

  1. FTP 或服务器把 /dede/ 目录重命名为随机字符串,如 /admin7x9k/
  2. 修改 /data/config.cache.inc.php 里的 $cfg_admin_dir 为新目录名
  3. 清理 /data/cache/ 缓存文件
  4. 用新地址访问后台

改名后扫描器批量扫描 /dede/ 就找不到入口,配合 https 跳转,安全性大幅提升。

六、第五步:HSTS 防止降级

在 nginx 后台 server 块加 HSTS 头:

server {
    listen 443 ssl;
    server_name www.xxx.com;
    
    # 全站 HSTS
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    
    location /dede/ {
        # 后台配置
    }
}

HSTS 让浏览器记住一年内只走 https,即使误输入 http 也会本地强制跳 https,不经过服务器,防中间人降级。

七、第六步:修改后台安全参数

后台 → 系统 → 系统基本参数 → 核心设置:

  • “DedeCMS 安装目录”确认正确
  • “后台登录是否开启验证码”建议开启
  • “后台登录失败次数限制”设为 5 次

后台 → 系统 → 验证安全设置:

  • 开启“后台登录验证码”
  • 开启“管理员登录邮件通知”
  • 设置“后台允许登录的 IP 段”(如固定办公 IP)

八、常见登录异常排查

1. https 后后台登录不上

原因多是 Cookie 的 Secure 标志开了,但后台某处还走 http。检查:

  • 访问地址是否确实是 https 开头
  • 是否有 http 的 iframe 嵌入后台
  • 301 重定向是否正确跳转
  • 清除浏览器 Cookie 重新登录

2. 登录后立即退出

典型是 Cookie 域名不匹配。检查 common.inc.phpsession.cookie_domain 是否设置了正确域名:

ini_set('session.cookie_domain', '.xxx.com');  // 前面带点表示泛域名

3. 验证码不显示

https 后验证码图片走 http 加载被拦截。检查 /dede/ 下的验证码生成文件 login_captcha.php 是否被 https 正常访问。

4. 后台样式错乱

后台 CSS/JS 走 http 被拦截。检查后台模板(/dede/templets/)里资源引用是否用了相对路径或协议相对路径 //

九、注意事项

  • 改后台目录名后,所有管理员的书签都要更新
  • 定时备份的脚本里如果写死了 /dede/ 路径要同步改
  • CDN 缓存如果包含后台目录,要排除 /dede/ 不缓存
  • 后台 https 后,宝塔等面板的“站点 SSL”要覆盖后台域名
  • 会员中心 /member/ 也建议同样做 https 强制

后台是站点最高权限入口,https + 目录改名 + Cookie 加固三件套是安全基线。配置完成后用未登录状态访问 http 后台地址,确认会 301 跳转到 https,再用 https 正常登录验证功能完整。定期查看后台登录日志,发现异常 IP 及时封禁。