Skip to content

fix(security): JWT 和数据库硬编码默认凭据必须在启动时校验 #199

Description

@xiaocheny214

问题描述

生产环境如果不设置环境变量,应用会静默使用公开的默认凭据运行,导致严重的安全漏洞。

1. JWT 硬编码默认密钥

文件: backend/packages/framework/src/windup_framework/config/jwt.py:19

如果 JWT_SECRET 环境变量未设置,所有 token 使用公开字符串签名,任何人都可以伪造有效 JWT。

2. 数据库硬编码凭据

文件: backend/packages/framework/src/windup_framework/config/database.py:25-26

本地 Docker 开发可以理解,但没有任何防护阻止这些值在生产环境使用。

建议修复

  1. 启动校验: 在应用启动时检查 JWT_SECRET 是否仍为默认值,若是则直接 raisesys.exit,给出明确错误提示。
  2. 数据库凭据: 同理校验 POSTGRES_PASSWORD,或者至少在文档/启动日志中强烈警告。
  3. 考虑将默认值设为空字符串而非示例值,强制用户显式配置。

影响

  • 严重程度: Critical
  • 攻击面: Token 伪造 → 完整账户接管
  • 可利用性: 极高,只需知道默认值即可

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0优先级 P0(最高,先做)bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions