知情人丢来一句话——一起草 | 17c网页版——关于网页版的说法——我把过程完整复盘了一遍!!现在的问题是:到底谁在改

前言 我把整个事件从头到尾复盘了一遍,把能看到的证据、技术细节和排查路径整理成一份可执行的清单。目标很简单:在不靠猜测的情况下,尽可能确定谁在改动 17c 的网页版,以及如何防止类似状况再次发生。下面是复盘结果和建议。
事情背景(简述)
- 事件对象:17c 的网页版(含前端静态文件、后端接口、CMS 内容等)。
- 触发点:网站内容/界面在不通知的情况下发生了变化,内部人员收到了“知情人丢来一句话——一起草”这样的提示,引发对“谁在改”的怀疑。
- 我做了完整复盘,时间跨度覆盖最近几周到当前。
复盘方法(我怎么做的)
- 收集时间线:把所有用户、运维、开发、第三方服务的变更时间点汇总,标注每次发布、merge、部署时间。
- 获取原始日志:包括 git 提交历史、CI/CD 构建日志、服务器 access/error log、CMS 修订记录、数据库变更日志。
- 比对文件差异:用 diff/sha 校验对比当前线上文件与最近一次已知“正确”版本的差异。
- 检查自动化任务:审查 cron、自动化脚本、第三方 webhook、依赖更新历史。
- 人员访谈:询问最近有权限操作的人,核对谁在对应时间段内做过操作。
- 回滚与复现:将线上版本回滚到最近稳定版本,观察问题是否随之消失或重现。
证据与技术分析(关键点)
- Git 历史:如果仓库是集中式管理,提交记录通常能直接指明是谁提交了改动。但要注意:有时自动化脚本或 CI 用的是机器人账号(例如 ci-bot),这会把责任链中断,需要往上追溯 CI 配置和触发来源。
- CI/CD 日志:构建和部署日志能显示是哪次构建触发了部署、触发来源是谁(手动还是 webhook)。若部署由第三方平台执行,可以在平台的审计日志里找到操作者或触发事件。
- 服务器与访问日志:web 访问日志能显示是否有异常请求或管理后台被直接改动的痕迹;SSH/远程登录记录可显示谁有过登录和命令执行。
- CMS 内部修订:多数 CMS(或自制后台)会保存修订记录和编辑者信息,先查这里通常最快。
- 文件系统时间戳与校验和:若怀疑被人直接覆盖文件,mtime、sha1/sha256 校验能帮助判断改动时间与来源。
- 第三方插件/脚本:有时插件自动更新、第三方服务回调或恶意脚本会修改页面内容;检查依赖更新记录与外部请求日志。
可能的改动者(按概率划分)
- 内部开发人员或产品编辑(最常见):直接提交或通过后台修改内容。
- 自动化系统(CI/CD、定时任务):以机器人身份推送或部署,触发人可能是定时器、依赖更新或 webhook。
- 第三方服务/集成:外部客服系统、营销工具、CDN 缓存策略或插件自动替换内容。
- 权限被滥用的账户:被盗用的账号或权限设置过宽的服务账号。
- 恶意入侵者(概率相对低,但不能排除):通过漏洞或弱口令获得写权限,但会在其它日志中留下痕迹。
快速排查清单(立刻能做的几件事)
- 拉取最近 7-14 天的 git 提交与 CI/CD 日志,按时间线标注每次部署。
- 检查 CMS 的修订记录,先从可见编辑记录入手。
- 在服务器上查看 SSH 登录记录、sudo 日志和 web server access log(可搜寻异常 IP、POST 请求到管理路径等)。
- 对比线上文件与上一次确认无误的备份,生成差异清单(diff)。
- 临时把写权限限制到最小范围(例如把生产写权限只留给核心运维账号),并开启更多的审计日志。
- 如果怀疑是自动化脚本导致,检查所有定时任务(crontab)、CI webhook 配置和第三方自动化规则。
中长期防控与流程建议(降低再次发生的概率)
- 强化版本管理:所有上线必须走 git,且强制代码审查(PR/merge request),避免直接在生产上改动。
- 明确部署链路:CI/CD 中的机器人账号应有明确的 owners,所有触发源和权限要有审计记录。
- 开启更细粒度的审计日志:无论是 CMS、托管平台还是服务器,都建议开启用户行为审计与不可篡改的日志保存策略。
- 权限最小化:生产环境的写权限只留给必要的人或服务,且使用多因子认证。
- 自动化与变更通知:每次部署或后台编辑都自动发通知到指定频道(例如 Slack/邮件),保证变更可视化。
- 变更登记与可回滚策略:每次上线配合变更单,且生成可快速回滚的版本包,便于定位问题与恢复。
- 文件完整性监控:部署文件上生产 AIDE、Tripwire 类工具或云端对象存储的版本控制来检测未授权改动。
结论与下一步 基于我复盘得到的证据链,第一步应锁定证据来源:git/CI 日志和 CMS 修订记录最有可能立刻说明“谁在改”。如果发现提交或部署来自机器人账号,需要继续向触发源追溯(是哪次 webhook、谁触发的 pipeline 或是哪个定时任务)。如果这些线索都指向人工操作,那把相关人员列入访谈对象并结合登录记录核对是必要动作。


