security: 每人一把口令(口令即身份) + 随机会话token + 无配置拒绝启动 + 爆破节流
- STORY_WEB_PASSWORD(默认story) 废弃 → STORY_WEB_USERS=名字1:口令1,名字2:口令2; 未配置/口令<8位/口令或用户名重复 → 启动即退出,杜绝弱默认口令裸奔 - cookie 不再存口令原文:登录发 secrets.token_urlsafe(32) 随机token, 会话存 SQLite sessions 表(30天);登出删token;从 USERS 移除某人=吊销其全部会话 - updated_by 改由服务端按会话身份填写,前端自报 by 不再可信;登录框去掉昵称字段 - 登录失败全局递增节流(最多sleep 5s),口令比较用 secrets.compare_digest - Dockerfile/compose 移除一切口令默认值;compose 未设 STORY_WEB_USERS 直接报错 - 顺手修 playtest.js 走位/动画/out_ref 行未转义的存储型XSS(esc补齐)
This commit is contained in:
@ -17,10 +17,11 @@ COPY ir_core ./ir_core
|
||||
COPY ir_dictionary.json ./ir_dictionary.json
|
||||
COPY web ./web
|
||||
|
||||
# SQLite 持久化目录(挂卷到此);点位集挂载到 /pointsets(只读)
|
||||
# SQLite 持久化目录(挂卷到此);点位集挂载到 /pointsets(只读)。
|
||||
# 注意:镜像里不埋任何口令默认值。STORY_WEB_USERS(名字:口令,…)必须运行时注入,
|
||||
# 未配置时 app 启动即退出(拒绝弱口令裸奔)。
|
||||
ENV STORY_DB_PATH=/data/story_events.db \
|
||||
STORY_POINTSETS_DIR=/pointsets \
|
||||
STORY_WEB_PASSWORD=story
|
||||
STORY_POINTSETS_DIR=/pointsets
|
||||
RUN mkdir -p /data /pointsets
|
||||
|
||||
EXPOSE 8787
|
||||
|
||||
Reference in New Issue
Block a user