整理文档
This commit is contained in:
1 parent
06a3d8506b
commit
0e347aad9e
26 files changed
+1552
-521
No files matched your search
@@ -0,0 +1,50 @@
|
||||
# 内容限制与隔离边界
|
||||
|
||||
[返回项目首页](../README.md)
|
||||
|
||||
## 文件白名单
|
||||
|
||||
- 仅允许根目录 `index.txt` 和 `posts/<目录>/<文件>` 内的 `.txt/.md/.markdown/.png/.jpg/.jpeg/.webp` 普通文件;扩展名使用小写。
|
||||
- 拒绝证书扩展名、隐藏文件、`.gitignore`、脚本、配置、符号链接、可执行位、子模块和其他类型。
|
||||
- 文本中的 PEM 证书/密钥标记也会拒绝。
|
||||
- Git 接收层能直接拦截,因此非白名单内容使整次推送失败,不静默改变作者提交。
|
||||
|
||||
## 容量配额
|
||||
|
||||
- 每个文本文件上限 256 KiB;图片单张 2 MiB、每目录最多 12 张、尺寸 4096×4096;每个目录合计 6 MiB。
|
||||
- 每位作者最多 1000 个目录、14001 个文件、原始文件合计 64 MiB;全站导入快照另限 64 MiB、1000 篇,超出时等待管理员处理。
|
||||
|
||||
## Git 接收限额
|
||||
|
||||
- Git 输入 pack 上限 8 MiB;全部作者接收仓库合计达到 256 MiB 后拒绝新 SSH 会话,需要管理员离线维护。
|
||||
- 此阈值是应用检查,生产还应为 Docker 数据盘配置真实文件系统配额。
|
||||
|
||||
## 正文解析
|
||||
|
||||
- 使用成熟 Markdown 解析器,拒绝原始 HTML、危险链接协议、外链图片、控制符和双向隐藏字符;代码块是惰性文本,绝不执行 MDX、JS、仓库脚本、构建任务或上传内容。
|
||||
|
||||
## SSH 命令与密钥
|
||||
|
||||
- 支持 Ed25519 和 2048–8192 位 RSA 公钥,拒绝弱密钥、负数/畸形 RSA 参数及额外二进制数据;拒绝把 `authorized_keys` 选项当作公钥上传。
|
||||
- SSH 只接受精确的 `git-receive-pack 'content.git'` / `git-upload-pack 'content.git'`,没有 shell、SCP/SFTP、TTY、转发、隧道、用户环境变量。
|
||||
|
||||
## 进程与存储隔离
|
||||
|
||||
- 接收仓库由 UID 10002 管理;API 为独立 UID 10001,正式仓库/用户密码文件不挂载给 SSH 容器;SSH 只读授权文件和只读固定 hook。
|
||||
- 接收内容再次验证后才导入 API 自己的按作者隔离的 Git 缓存与阅读快照。
|
||||
|
||||
## HTTP 与账户限额
|
||||
|
||||
- HTTP 请求体 8 KiB;注册/登录合计全局 10 次/分钟,修改操作全局 60 次/分钟;密码哈希并发最多 2。
|
||||
- 1000 用户、1000 个有效会话上限,一小时固定会话期限。
|
||||
- 全局限制偏保守,后续可细化 IP/账户限制以改善公平性。
|
||||
|
||||
## 统计与隐私
|
||||
|
||||
- 统计不收集 IP/访客身份:公开文章数、标签数、Markdown 字节数、启动以来文章 API 请求数。
|
||||
- 请求数不是独立访客数,重启后清零。
|
||||
|
||||
## 前端接入
|
||||
|
||||
- 服务器只返回 JSON Markdown 与图片;后续前端必须把元数据当文本输出,并继续禁用原始 HTML、MDX和危险链接,不能将接口字段直接作为 HTML 执行。
|
||||
- 隔离不能替代 Git/OpenSSH/解码库的持续安全更新。
|
||||
Reference in new issue
Block a user