fix(auth): 固定验证码改为显式 AUTH_EMAIL_DEV_CODE 环境开关(安全评审反馈)
不再从 mailer 运行时类型推导认证材料:固定码仅当显式设置 AUTH_EMAIL_DEV_CODE 时生效(run-dev.sh 设 888888,生产部署不经 该脚本即为随机码),设置时启动打印醒目告警。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -73,11 +73,10 @@ func (h *Handlers) EmailCode(c *gin.Context) {
|
||||
}
|
||||
|
||||
code := randCode()
|
||||
// ⚠️ 开发期便利【上线阻断项】:mock 邮件(SMTP 未配置)时验证码固定 888888,
|
||||
// 免翻日志。真实 Mailer 接入后自动回到随机码;若生产误配 mock,
|
||||
// 任何人可用固定码登录任意邮箱——pickMailer 的 TODO 必须先解决。
|
||||
if _, mock := h.Mailer.(MockMailer); mock {
|
||||
code = "888888"
|
||||
// ⚠️ 开发期便利:AUTH_EMAIL_DEV_CODE 显式设置时验证码固定(run-dev.sh 设 888888),
|
||||
// 免翻日志。仅开发脚本会设置该变量;生产部署不设即为随机码,启动时若设有醒目告警。
|
||||
if h.DevCode != "" {
|
||||
code = h.DevCode
|
||||
}
|
||||
if err := h.RDB.Set(c, store.KeyAuthEmail(email), code, emailCodeTTL).Err(); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, protocol.NewAPIError(protocol.ErrInternal))
|
||||
|
||||
@@ -21,6 +21,8 @@ type Handlers struct {
|
||||
JWT *JWT
|
||||
Wechat WechatClient
|
||||
Mailer Mailer
|
||||
// DevCode 非空时邮箱验证码固定为该值(AUTH_EMAIL_DEV_CODE,仅开发脚本设置)。
|
||||
DevCode string
|
||||
// QrAuthURL 二维码内容模板(真实环境为微信开放平台授权页,%s 为 state)
|
||||
QrAuthURL string
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user