Skip to content

Security: wcpe/JianVideo

Security

SECURITY.md

安全说明:轻量级单用户视频媒体服务器

信任模型、敏感数据处理、外部输入校验与漏洞报告渠道。安全模型变化时更新。

1. 信任模型

  • 信任边界:Web 前端与后端之间的 HTTP 通信在本地网络内进行,不假设外部攻击者。
  • 单用户模式:仅一个用户账号,认证后拥有全部权限。
  • 攻击面:HTTP API 端点、文件路径参数、SMB 凭据、用户输入(登录表单)。
  • 不暴露公网:默认绑定 localhost,如需暴露到公网需用户自行配置反向代理和 HTTPS。

2. 密钥与敏感数据

  • 密码存储:用户密码使用 bcrypt 哈希存储,不保存明文。
  • SMB 凭据:SMB 用户名/密码加密存储在配置文件中,不入库。
  • 会话令牌:使用加密安全的随机令牌,存储在 Cookie 中,设置 HttpOnlySecureSameSite=Strict 标志。
  • JWT 密钥:启动时若未设置 JWT_SECRET 环境变量,自动生成 32 字节随机密钥并输出 WARN 日志提示用户持久化。用户需设置环境变量以避免每次重启后重新登录。
  • 日志脱敏:日志中不输出密码、令牌、SMB 凭据等敏感信息。
  • 禁止硬编码:所有密钥、端口、路径通过配置文件或环境变量控制。

3. 外部输入

  • 路径遍历防护:所有文件路径参数经过规范化校验,防止 ../ 路径遍历攻击。
  • SQL 注入防护:所有数据库操作使用参数化查询,禁止字符串拼接 SQL。
  • XSS 防护:前端 React 框架默认转义输出,API 响应设置正确的 Content-Type
  • CSRF 防护:Cookie 设置 SameSite=Strict,敏感操作验证 Origin 头部。
  • FFmpeg 命令注入:所有传入 FFmpeg 的参数经过白名单校验,禁止用户直接控制命令行参数。

4. 漏洞报告

  • 发现安全问题请通过项目 Issue 提交。
  • 请提供复现步骤和影响范围,维护者将在 72 小时内响应。
  • 安全补丁通过正常版本发布流程发布。

There aren't any published security advisories