公告把示例功能整段移除以修掉资源分配问题,生产站该留演示代码吗
Drupal 公告 SA-CONTRIB-2026-215 的处理方式值得细读:评级只是 Less critical(8 / 25),修复手段却是把邮件示例功能整个从 Examples 模块里移除——email_example 这个示例子模块发送时没有资源上限或限流,保留它就等于保留一条成本不可控的入口。生产站要不要留演示代码,判断依据不该是风险评级的高低,而是暴露面:这段代码会不会被外部访问到、能不能被反复触发。会,就没有「评级低所以留着」的余地。
这条公告的处理方式为什么是移除
示例代码的定位是教学,默认没有生产级约束:不设速率限制、不做用量核算、不考虑并发滥用。要给这样的代码补上限,改动量和重写差不多,而它本身对正式功能毫无价值——所以维护者选择整段删除而不是打补丁。这是安全处置里干净的一类:不修复缺陷,直接消灭缺陷所在的通路。对运营方来说对应的启示是:看到「移除功能」级别的公告,别只问自己升不升级,要问这段功能在我的生产环境里本来该不该存在。
示例代码带出哪三类风险
第一类是资源分配没有上限:示例发邮件、示例生成图片、示例跑检索,任何一个被脚本反复调用,账单和服务器负载都会失控,公告里的正是这一类。第二类是默认路由暴露:示例往往自带页面路径与接口,没被业务使用也照样监听,等于多开了几扇没人看管的窗。第三类是简化逻辑的旁路:演示代码为省事常跳过校验、假设调用者可信,这些假设在公网环境全部不成立。三类风险的共同点是都来自「它本来就不是为生产写的」。
部署阶段怎么清
把清理做成部署清单而不是安全事件响应:整理示例与演示文件的目录清单,交付环境构建时整目录排除;安装后核对路由表,删掉未被业务引用的演示入口;用不到的扩展模块干脆不装,比装了再禁用面更小。AnQiCMS 提供宝塔面板一键部署与 Docker 镜像两条部署路径,无论走哪条,上线前都值得做一次「演示文件核查」:对照程序目录里名为示例、演示、测试的子目录逐个确认是否可删。注意这一步和内容安全是两条线:AnQiCMS 自带的敏感词过滤、防 SQL 注入与 XSS 防护管的是进入系统的数据,收不掉「多余的可执行入口」这个问题,清单核对不能省。
留下的演示入口怎么限制
确需对外演示时,把演示放在线上的独立体验环境而不是生产站——AnQiCMS 就单独提供在线体验站供后台功能演示,与任何客户站点隔离。退而求其次的做法是给演示入口加围栏:独立子域或独立实例、访问前需要验证凭据、对触发类操作设速率与用量上限、演示数据定期重建。核心原则一条:演示代码与生产流量之间必须隔一层,而不是靠「应该没人找到这个地址」。
常见问题
评级低的公告可以缓一缓再处理吗? 升级可以排期,暴露面收敛不用等升级:先把演示入口下线或隔离,风险立刻降一档,这是不依赖厂商补丁的自救动作。
怎么快速发现站里还留着哪些示例? 按目录名与路由扫一遍:examples、demo、test 之类的命名,以及后台路由表里业务用不到的接口路径,逐个确认来源后删除。
禁用比删除安全吗? 删除更彻底。禁用依赖配置正确且长期不变,误开、升级复位都可能让它悄悄复活;不进交付包的代码才是不存在的风险。