Appearance
安全
针对 Memos 部署的安全加固实用指南
Memos is self-hosted by design. You control the infrastructure, storage, and access policies.
令牌安全模型
我们使用三种形式的令牌来进行认证:
| 令牌类型 | 生命周期 | 存储方式 | 提示 |
|---|---|---|---|
| Access token (JWT) | 15 分钟 | 客户端的内存中 | 无状态;不需要查询数据库即可验证 |
| Refresh token (JWT) | 30 天 | 仅支持 HTTP cookie | 存储在数据库中,可撤销,生产环境中 SameSite=Lax、Secure=true |
| 个人通行令牌 | 用户自行选择 | 数据库中,SHA-256 哈希串 | 前缀 memos_pat_;令牌的原始值只会在创建时显示一次 |
JWT 密钥有些类似 UUID,会在第一次运行时自动创建,并存储到数据库中。在 demo 模式下,密钥固定是 usememos —— 永远不要在生产环境中部署 demo 模式。
核心建议
- 当部署在反向代理上时,将
MEMOS_INSTANCE_URL设置为实例的 URL。
- 如果你的实例是私有的,请禁用用户注册。
- 如果你不需要公开任何内容,请
禁用公开备忘录。
- 给你的实例配置 HTTPS。
- 复查谁可以创建个人通行令牌,谁可以发布公开笔记。
会话和认证卫生
- 谨慎保护管理员账号
- 如果可以,团队实例请使用单点登录
- 如果凭证和令牌已经泄露或不再使用,及时删除
- 避免让旧的个人通行令牌无限期保持激活状态
- 永远不要在生产环境中使用 demo 模式(demo 模式下写死了 JWT 密钥)
使用反向代理时,有如下要求
你的代理需要:
- 终止 TLS。
- 保留
Host和X-Forwarded-*标头。
- 暴露和
MEMOS_INSTANCE_URL中配置的一样的公共 URL。
附件和分享需要考虑的事
安全问题不只是针对登录,公共的笔记可能会暴露如下信息:
- 笔记内容
- 附件文件
- 链接,以及笔记中的引用内容
考量安全问题时,同样思考一下可见性问题和附件问题。
备份和恢复
安全问题同样涵盖可恢复性,常规备份需要包含:
- 数据库
- 附件文件如果没有存储在数据库中,备份文件存储
- 创建实例时的部署配置