本页说明 v0.2.8 对管理后台的安全加固和后台资源调整,以及升级、回退时需要注意的地方。
管理后台以 Cookie 维持登录。旧版本的接口同时接受 GET 和 POST,Cookie 为 SameSite=Lax;用户登录后打开恶意网页,对方可以通过一个跳转链接让模块执行 AT 指令、重启、修改 IMEI 或删除短信。
v0.2.8 起:
- 只有读取类接口接受 GET,例如总览、设备信息、短信列表、TTL 状态。执行 AT、修改设置、删除短信、扫描小区等操作必须使用 POST。规则集中在
src/server.rs的method_allowed。 - 浏览器标记为跨站(
Sec-Fetch-Site: cross-site或same-site)的/api/、/cgi-bin/请求一律拒绝。直接输入地址、书签和脚本工具(不发送该头)不受影响。 - Cookie 改为
SameSite=Strict,任何跨站跳转都不会携带登录状态。 - 带
Origin的请求仍需与当前地址一致;WebSocket 握手同样校验来源。 /logout.html只清除当前浏览器的 Cookie;跨站跳转不会注销其他会话。脚本请使用POST /api/logout。
如果你用 curl 等脚本调用了修改类接口,请改为 POST,例如:
curl -b "zbims_session=..." -d "ttlvalue=64" http://192.168.225.1/api/set_ttlWeb 登录、修改 Web/root 密码、修改 HTTP 端口和网页终端 root 登录共用一个按客户端地址计数的失败记录:
- 前 5 次错误不限制;之后每次错误分别锁定 1、2、4、8 秒……,最长 15 分钟。锁定期间返回
429和Retry-After,正确密码也需等待。 - IPv6 按 /64 网段计数。登录成功后清零;一小时没有新的错误也会遗忘。
- 网页终端重新连接不会重置计数。
- 密码校验逐个排队,排到时再检查一次锁定,同时发出的大量请求也只有前 6 次会真正校验密码。
/usrdata/simpleadmin/simpleadmin.auth 仍是一行 用户名:密码,其中密码改为 SHA-512 crypt($6$ 开头,随机盐)。旧版明文文件、安装器写入的凭据和 simplepasswd 设置的密码,都会在服务启动时自动转换。root 密码仍写入系统 /etc/shadow,不受影响。
回退提示: v0.2.7 及更早版本只认明文。从 v0.2.8 回退时,请在安装器中勾选“修改 Web 账号与密码”重新设置,或在模块上执行 simplepasswd;否则旧版本会提示密码错误。
- 延迟监测(ICMP)和信号/流量采样可分别关闭或调整间隔,见 五分钟趋势与延迟监测。延迟监测默认 1 秒一次,往返约 120 字节,约 9.9 MB/天的蜂窝流量;改为 10 秒约 1 MB/天。
- 短信转发按新短信通知读取,确认通知可用后兜底轮询为 60 秒。
- 网页 API 走同一条 WebSocket 时可以并行等待,每条连接最多 8 个进行中的请求。前端请求默认 30 秒超时,扫描小区、发送短信和手动 AT 为 150 秒;总览在上一次刷新未返回或标签页处于后台时不发新请求。
cargo test:跨站与 GET 修改拦截、限速与客户端隔离、并发登录不绕过限速、明文密码迁移、监测计划校验与持久化、WebSocket 慢请求不阻塞快请求(模拟 1.5 秒的小区扫描)。node tests/monitor-schedule-browser.cjs以及现有浏览器测试全部在模拟模式下通过。- 本版本未在真机验证
+CMTI是否送达/dev/smd11;未送达时转发会保持 10 秒轮询,行为与旧版一致。