• 简体中文
  • 安全配置

    JWT 密钥

    JWT 签名密钥用于 Micronaut Security 集成。在生产环境中通过环境变量设置:

    export JWT_SECRET="your-64-char-secret-key-here"
    export JWT_REFRESH_SECRET="your-64-char-refresh-secret-key-here"
    Warning

    永远不要提交真实的密钥值。application.yml 中的默认值仅用于开发。

    令牌配置

    属性默认值说明
    micronaut.security.token.nameAuthorization头名称
    micronaut.security.token.jwt.signatures.secret.default.secret${JWT_SECRET:...}签名密钥
    micronaut.security.token.jwt.generator.refresh-token.secret${JWT_REFRESH_SECRET:...}刷新令牌密钥

    CORS 配置

    micronaut:
      server:
        cors:
          enabled: true
          configurations:
            web:
              allowed-origins-regex: .*       # 生产环境请限制
              allowed-methods: [POST, PUT, GET, DELETE, OPTIONS]
              allowed-headers: [Content-Type, Authorization, X-Requested-With]
              expose-headers: [Content-Type, Authorization]
              allow-credentials: false
    Note

    当前 CORS 配置(.* 来源正则)是宽松的,仅用于本地开发。在生产环境中,请将 allowed-origins-regex 限制为你的域名。

    安全头

    security-headers:
      content-security-policy: "default-src 'self'"
      x-content-type-options: nosniff
      x-frame-options: DENY
      strict-transport-security: "max-age=31536000; includeSubDomains"
    用途
    Content-Security-Policydefault-src 'self'防止 XSS
    X-Content-Type-Optionsnosniff防止 MIME 嗅探
    X-Frame-OptionsDENY防止点击劫持
    Strict-Transport-Securitymax-age=31536000强制 HTTPS

    限流

    rate-limit:
      enabled: true
      max-requests-per-window: 100
      window-ms: 60000

    基于 IP 的滑动窗口限流。超出限制返回 HTTP 429。

    密码哈希

    密码使用 PBKDF2 + SHA-256 进行哈希。系统支持在用户成功登录时自动升级旧版哈希格式。

    生产环境清单

    • 通过环境变量设置 JWT_SECRETJWT_REFRESH_SECRET
    • allowed-origins-regex 限制为你的域名
    • 通过环境变量设置 DB_URLDB_USERNAMEDB_PASSWORD
    • 禁用 H2 Web 控制台(h2.web-console: false
    • 通过反向代理启用 HTTPS(nginx、Caddy 等)
    • 根据流量模式审查限流设置