文件
wangchuanli f36149efc3 feat(安全): 对外暴露面加固 + 界面去 AI 化(v1.5.0)
界面(去 AI 味):
- 大屏页清除 114 处生成器残留属性 data-page-node-id
- 视觉系统改回工程控制台风格:去 radial/linear-gradient、去辉光、
  去标题前彩色装饰条,改为中性灰阶 + 单一蓝色强调色;KPI 色条改状态点
- 精简各页说教式长提示;修掉 profile.html 泄漏到页面上的 Markdown 星号
- 删除登录页过时的「默认账号 admin / admin123」提示(1.4.0 起已无默认口令)

安全与隐私(按「将会被公网访问」收口):
- 内部异常只回 8 位事件号,完整堆栈进服务端日志(web/api.py::_internal)
- 导出文件名收敛:防响应头注入与路径穿越;manage.py passwd 补用户名校验
- 登录对不存在的账号也走一次哑哈希,抹平用户名枚举的时序差异
- /api/* 读接口限速 240 次 / 60 秒 / 账号(挡住循环调 /api/bundle)
- 进程 umask 0077 + 目录 0700 / 文件 0600:对话正文与主密钥的落盘权限
- 表名与库文件路径只对管理员下发;大屏页所有数据插值转义
- --debug 只允许绑定回环地址;新增 Permissions-Policy 与 413 处理器

文档:
- DEPLOYMENT 新增第十三节「安全与隐私基线」;迁移表补 1.4.0 → 1.5.0 行
- SECURITY 更新支持范围、新增「信息泄漏收敛」小节与上线检查项
- .codebuddy/ 加入 .gitignore(助手工作记忆不进仓库)

版本:1.4.0 → 1.5.0(无库结构变更,user_version 仍为 4)
验证:python tools/smoke.py → ok=264 fail=0;python tools/check_docs.py → 0 处问题
2026-09-18 11:13:17 +08:00

80 行
2.4 KiB
Plaintext

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# =============================================================================
# 注意:Git 的 .gitignore **不支持行尾注释**——规则后面跟 # 注释会让整行变成
# 一个永远匹配不上的模式(曾经因此把 data/instance.json 误入库)。
# 注释一律单独占一行。
# =============================================================================
# ---- 数据与运行产物:正本不进版本库(体积大、含凭证衍生物)----
# 同时写 data/* 与 data/**/* 两种:只写前者会漏掉子目录
# (曾因此让 data/demo/usage.sqlite 逃过忽略规则)
data/*.sqlite
data/*.sqlite-wal
data/*.sqlite-shm
data/**/*.sqlite
data/**/*.sqlite-wal
data/**/*.sqlite-shm
# 含 secret_key,泄露等于会话签名密钥外泄,绝不可提交
data/instance.json
data/**/instance.json
data/exports/*.csv
# 兜底:手工 cp 出来的快照(如 usage.sqlite.bak-pre-v13)绝不能入库,
# 它含 settings 的凭证密文与 users 的密码哈希
data/*.bak*
data/*.sqlite-bak*
# 界面截图(tools/shots.py 生成的临时产物;手册配图在 docs/images/)
data/shots/
# 示例数据(tools/demo_data.py 生成,随时可重建,不必入库)
data/demo/
# ---- 日志 ----
logs/*
# ---- 数据库备份 ----
# 全目录忽略,只放行说明文件。备份含凭证密文与密码哈希,永不入库。
# 刻意不放在 data/:data/ 是 Docker 卷,down -v 会把备份和正本一起删掉。
backups/*
!backups/README.md
!backups/.gitkeep
# ---- v1.0 旧版归档 ----
# 若仓库被整体移到工作区根,legacy-v1/(含真实 CSV)必须继续被忽略
legacy-v1/
# ---- 保留目录本身 ----
# docker-compose 是绑定挂载,宿主机目录必须先存在,
# 否则 Docker 会以 root 自动创建,Linux 上会引发「unable to open database file」
!data/.gitkeep
!data/exports/.gitkeep
!logs/.gitkeep
# ---- Python ----
__pycache__/
*.py[cod]
*.egg-info/
.venv/
venv/
# ---- 编辑器 / 系统 ----
.idea/
.vscode/
*.swp
.DS_Store
Thumbs.db
# ---- AI 助手的工作记忆 ----
# .codebuddy/ 里是会话记忆与技能缓存,属于「开发过程产物」而不是项目资产,
# 与代码版本无关。对外开源后也不该混进仓库(README 里不需要它,
# 而 tools/check_docs.py 会把其中的 .md 当成项目文档一起扫)。
.codebuddy/
# ---- 部署本地配置(含明文密码,只提交 .env.example)----
.env
.env.local
.env.*.local
compose.override.yml