第三十七章 安全加固

Ju7CMS 用户手册 · 发布于 2026-10-27 · 更新于 2026-10-27

安全加固分四层:目录与文件访问、后台入口与账号、对外入口、备份与可恢复;附配置项清单与上线前检查单。

这一章解决什么

安全加固不是装一个插件就完事,而是四层各挡一段:服务器挡住不该下载的文件、后台挡住不该进来的人、表单挡住乱填与刷接口、数据与配置留好可恢复的底。本章按这四层给出本站已经生效的配置,以及还需要人工维护的部分。

本章的检查项全部是「看清楚再动」。改 web.config、改角色、改 IP 规则都可能让站点或后台立刻不可用;操作前先备份对应文件与数据库。

第一层:目录与文件访问

站点根与九个目录各有一份 web.config,IIS 就近生效。它们的作用是让「知道路径」也下载不到敏感文件。

位置拦截内容效果
站点根.mdb .ldb .bak .log .dmp .sql数据库、锁文件、备份、日志、导出文件一律 403
站点根移除 X-Powered-By;关闭目录浏览;DetailedLocalOnly响应头不暴露技术栈;目录不列文件;详细错误只在本机显示
data/全部请求 HttpForbiddenHandler数据库目录整体不可访问
cache/ log/全部请求禁止缓存与日志不对外
lib/*.asp 禁止类文件不能被直接请求执行
ju7/七个入口/公共文件禁止base.asp、布局片段等不能被单独打开
manage/*.html 禁止后台模板不能直接下载
theme/ plug/config.xml、update.xml、*.html;插件目录另禁库/备份/日志模板源码与安装包不外泄
upfile/只允许 StaticFileModule 读取;加 nosniff上传目录里的文件只当静态文件发,不会被当脚本执行

静态资源的缓存策略也在这里:css/js 缓存 30 天,图片与字体 7 天。HTML 页面则显式 no-cache,避免坏页面粘在访客浏览器里。

第二层:后台入口与账号

机制位置说明
登录校验islogin每个后台页开头调用;未登录直接跳登录页
页面级权限checkpagelever按当前账号角色能看哪些菜单行判断;菜单行按 admin_menu.url 反查,不写死编号
超级管理员admingroupid=0只有超级管理员能升级、授权等敏感操作
七天自动登录登录页复选框发一个带期限的令牌;公共电脑不要勾
操作日志设置 → 操作日志记录谁在什么时候改了什么,排障与追责都用它

账号必须做的四件事

  1. 删除或停用离职人员账号,不要只改密码。
  2. 按岗位建角色,只勾需要的菜单;编辑不需要「模板管理」「数据库设置」「授权系统」。
  3. 超级管理员只留一到两个,日常操作用普通管理员。
  4. 定期看操作日志与错误记录,异常登录、频繁 403、突然的大量删除都要追。

第三层:对外入口

访问限制(IP 封禁与限速)

后台:功能 → 访问限制。规则存在 plug_ipaccess 表,分「全站规则(classid=0)」与「栏目规则」两类:

  • 全站规则支持授权名单 / 禁止名单,并可用「窗口秒 + 阈值」做限速;
  • 栏目规则可单独限制某个栏目,适合只保护留言或搜索结果;
  • 命中后返回统一的 403 提示页,不会把 ASP 错误细节暴露给访客。

如果站点前面有 CDN 或反向代理,必须配置 ip_proxy(可信代理)并只信任它转发的 X-Forwarded-For;否则所有访客看到的都是代理 IP,封一个等于封全站。ip_proxy 留空时系统只认 REMOTE_ADDR,本机测试永远看到 127.0.0.1。

留言与表单

  • 手机号字段可开短信验证码;服务端要三个条件全成立才验码:短信插件已装、插件配置「是否开启」为真、该字段勾了「开启验证码」。
  • 发码按号码计费,并有 60 秒间隔、单 IP 与单号码总量三道限额,都在短信插件的服务端。
  • 表单提交走 /comment/form/,字段名与表单 ID 必须对得上;改模板时不要改 name 与隐藏的 classid。

禁用词

后台:功能 → 禁用词检查。插件自带一份预置词表,可勾选入库;内容保存时按启用词检查并提示。它是「提示 + 记录」,不是自动改写正文;是否要替换由编辑决定(功能 → 内容替换)。

第四层:备份与可恢复

备份产生时机位置
手动数据备份功能 → 数据备份data/databackup/
升级前备份执行升级包前自动data/databackup/pre-migrate-<时间>.bak
整站回灌前备份点「整站回灌」前自动pre-apply-<时间>.bak 与 upfile-preapply-*、block-preapply-*

备份要满足两个条件才算数:存到站点目录之外(或至少定期下载走),以及真的恢复过一次。只备份不演练,出事时才发现文件是空的,这种例子很常见。

配置里的秘密

短信的 AccessKey/Secret、邮件密码、数据库路径等都在数据库配置或 config/ 下。加固要求:

  1. 不要把这些值贴进聊天工具、工单或文档;截图前先遮挡。
  2. 只给程序需要的权限:短信子账号只给发送与查询,不给费用中心写权限。
  3. 人员变动或怀疑泄露时立即轮换密钥,再更新后台配置。
  4. 数据库目录已被 data/web.config 整体禁止访问,但仍不要把 .mdb 放进 upfile/ 或主题目录。

上线前的最小检查单

  1. 根目录 web.config 存在,/data/#Andvar_com.mdb 直接访问返回 403。
  2. /ju7/base.asp、/theme/576so/config.xml 直接访问返回 403。
  3. 未登录访问任意后台页,跳到登录页而不是报错页。
  4. 用普通管理员登录,确认看不到「授权系统」「数据库设置」等未授权菜单。
  5. 后台「错误记录」没有持续新增的 500;「操作日志」有当天的登录与修改记录。
  6. 数据备份能生成、能下载,且知道怎么恢复。

接下来怎么读

  1. 升级包怎么校验、怎么回滚:第三十八章。
  2. 授权与到期提醒:第三十六章。
  3. 已经出问题时的排查入口:第四十章与第四十四章。