Skip to content

v3.3.0

Choose a tag to compare

@wowayou wowayou released this 08 Oct 01:17
· 92 commits to main since this release
  • 编辑页:修复在日期、成员名、车站名等输入框里改完内容、紧接着点别的输入框或按钮时,那一下点击和输入被吞掉的问题。原因是失焦时整张表单被重建;现在只原地更新 12306 链接、「默认 N」等占位文字、步骤条和校验提示,加删成员或车站、开车、返程开关、导入、恢复历史、远端合并才整体重绘。

  • 编辑页:取名、编辑口令、额度、打不开、已删除这几个整页遮罩,打开时焦点进入遮罩、背景设为 inert、Tab 键只在遮罩里循环,关闭后焦点还给原来的元素;额度遮罩支持 Esc。页内弹窗的 Tab 也限制在弹窗里。

  • 自部署:构建时可用环境变量 SITE_ORIGIN 指定站点地址,SITE_INDEXABLE=1 允许收录。换了域名又没设 SITE_INDEXABLE 时,所有页面加 noindex,robots.txt 全禁,不生成 sitemap.xml 和 llms*.txt。官方构建不变。见 README 的「自己部署」。

  • 安全(费用与数据安全交叉审计,两位审计员分别做静态审计和本地动态攻击,结果由主代理逐条核对):

    • 修复(P0,已于 2026-10-08 先行上线):行程实例的内部接口能从外面访问,可以不经邀请码自建行程并绕过公共额度护栏、读出自带的高德 Key 和邀请码、用 GET 删行程。现在只有白名单路径能转发,内部接口要带 Worker 的内部标记;不是自带 Key 的行程一律经过公共额度护栏。
    • 管理登录限次改为原子操作(并发试错不会多放行),口令对了退还那次尝试;全站登录被锁时,可用环境变量 FORCE_PUBLIC_PAUSED、FORCE_CREATION_PAUSED 直接暂停,不需要登录。
    • 「改用自己的 Key」先鉴权再对外验 Key;自带 Key 新建先过新建限速再验 Key;Key 或邀请码不对时退还全站新建名额。
    • 保存的大小按实际内容计算(分块上传也拦得住),配置只能是对象。
    • 同一个行程的请求逐个处理,避免并发时用旧数据覆盖新数据(比如重置编辑链接的新密钥被并发的改名盖掉)。
    • 公共额度被拒的部分退回行程当天的计数。
    • 来源 IP 的哈希加盐并按天轮换;方案页访问口令至少 4 位,按来源和按页分别限次;编辑口令按最近一小时滑动计数,提示还要等几分钟。
    • 高德配额标记自动过期;删除和到期的行程从管理页名单里去掉;删除行程只接受 POST,方案页在行程实例里就删。
    • 批量接口:每一项单独校验,查询里自带 key(任何大小写)直接拒绝,去掉 callback、output、sig。
    • 单个高德查询改用 POST,地点文字不再出现在网址和访问日志里。
    • 地图提示框里的成员名字当纯文本显示(编辑页和方案页)。
    • 每个行程的保存(每分钟 60 次)、发布(每小时 30 次)、实时连接(30 个、单条消息 2 KB)有上限;出行日期再远,保留期最多到最后编辑后 2 年。
    • 关掉 *.workers.dev 子域名和预览地址。
    • 不兼容:方案页访问口令最短 4 位(已设的短口令仍然有效);批量接口查询里带 key 参数会被拒绝。
  • 隐私页按审计核对表更新:访问日志、IP 哈希、配额标记、删除后站点侧剩下的记录。


线上:https://carpool.eigentime.org · 自部署升级见 README 的「自部署升级」一节。本版有两处不兼容,见上面标「不兼容」的条目。