授权与在线更新
授权码怎么来的、校验发生在哪里,以及在线升级时的安全校验。
授权是怎么设计的
授权码是一段带签名的文本,由持有私钥的一方签发,站点本地用公钥验证。 签名覆盖了域名与到期时间,改动其中任何一项,签名立刻失效。
这种设计的好处是 验证过程完全离线:不需要回调任何服务器, 站点在内网、断网、对方服务器宕机的情况下都能正常工作。
未授权时会怎样
前台会统一跳转到授权页,页面上写清楚当前域名和获取授权的方式。 后台、授权页本身、站点地图与 robots 不受影响 —— 否则你连填授权码的地方都进不去。
在线更新
后台 在线更新 页可以检查新版本并一键升级。整个过程:
- 拉取版本信息,校验其数字签名
- 下载更新包,核对 SHA256
- 解压前先列出压缩包内所有条目,拒绝任何跳出目标目录的路径
- 按白名单覆盖文件,保护目录不会被更新包碰到
- 升级前自动备份,出问题可以回滚
哪些文件会被更新覆盖
| 会被覆盖 | 不会被覆盖 |
|---|---|
core/ | config/ 站点配置 |
app/ | data/ 数据库与备份 |
templates/ | storage/ 缓存 |
wwwroot/static/ | wwwroot/uploads/ 上传文件 |
docs/ | 你自己新增的主题目录 |
升级前请先备份。虽然升级会自动留一份,但把备份下载到本地才是真的安全 ——
服务器本身出问题的时候,放在同一台服务器上的备份帮不了你。
自己改过内核怎么办
改过 core/ 或 app/ 的话,升级会覆盖掉你的改动。
推荐的做法是把定制内容放进自己的主题目录与配置里,
这样升级永远只碰公共部分,你的东西不会被冲掉。