Files
FootPrint/app
root 17ab5f0390 security(review): fix invite bypass via smuggled seed flag, login rate limit, server-side logout, attachment preview XSS hardening
- /auth/register: strip client-supplied seed flag (PoC confirmed it bypassed
  invite code, MAX_USERS quota AND first-user auto-admin, granting admin
  without any credential); demo-rebuild internal path unaffected
- /auth/login: per-IP+username of 5 consecutive failures gets a 10-minute
  cooldown against in-memory counter (brute-force guard)
- /auth/logout: new endpoint revokes the current Bearer token server-side;
  frontend calls it (best-effort) before local clearToken on sidebar logout
- attachment docx/xlsx preview: sanitize generated HTML (strip scripts,
  event handlers, dangerous protocols) before dangerouslySetInnerHTML
  render, preventing token theft via malicious previewed documents

PoC suite: seed smuggling rejected, 429 on 6th login attempt, token dead
after logout, per-user isolation intact (403/401/404 as before);
integration 61/61 green
2026-10-17 21:18:55 +08:00
..
2026-10-17 12:05:56 +08:00

足迹 Footprints — 应用目录

React 19 前端 + Tauri 2 桌面壳 + 共用 Node 命令层。 云优先架构:业务数据全部存服务器(../sync-server),浏览器 / PWA / 桌面三端共享同一命令契约。

结构

src/          React 前端(时间线 / 记录 / 成绩 / 统计 / 类型 / 字典 / 管理)
public/       PWA:sw.js(v3,接口类请求绝不缓存)/ manifest / 图标
src-tauri/    Tauri 2 桌面壳(Windows NSIS 安装包构建)
server/       db.mjs 命令层(37 个命令,Web 与桌面共用)+ seed.mjs(本地演示数据)
schema.sql    数据库 schema(Rust 与 Node 共用同一份,v2 含同步元数据)

图标再生成:python ../tools/gen_icons.py(桌面)与 python ../tools/gen_pwa_icons.py(PWA)。

文档:../docs/DESIGN.md(设计底稿)· ../docs/api.md(HTTP API)· ../sync-server/(服务器)。