diff --git a/.gitignore b/.gitignore index 874df1b..1c3f608 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /node_modules/ /logs/ conf.json +.env diff --git a/app.js b/app.js index fc4e6ed..f8bdb63 100644 --- a/app.js +++ b/app.js @@ -20,6 +20,11 @@ class APP { } setupMiddleware() { + // 服务在 nginx 之后,需信任代理头才能拿到真实客户端 IP + // (否则 ctx.ip 恒为 127.0.0.1,限流会变成全站共享一个桶) + this.app.proxy = true; + this.app.proxyIpHeader = "X-Real-IP"; + this.app.use(cors()); this.app.use(bodyParser()); diff --git a/handler/users.js b/handler/users.js index bf6a26c..919b396 100644 --- a/handler/users.js +++ b/handler/users.js @@ -241,17 +241,10 @@ class HandlerUser { return ResponseUtil.success(ctx, { user: sanitizeUser(ctx.state.user) }, "获取用户信息成功"); } - // 兼容:通过 userId 查询(脱敏响应,不含任何安全凭证) - const { userId } = ctx.request.body || {}; - if (userId) { - const user = await DBModel.User.findOne({ _id: userId }); - if (!user) { - return ResponseUtil.notFound(ctx, "用户不存在"); - } - return ResponseUtil.success(ctx, { user: sanitizeUser(user) }, "获取用户信息成功"); - } - - return ResponseUtil.badRequest(ctx, "缺少 token 或 userId"); + // 不再支持「凭 userId 明文查询」:用户ID不是凭证, + // 任何人都可能通过日志/链接拿到他人 userId,若可据此读取资料即构成越权。 + // 一律要求携带有效 token,身份以 token 为准。 + return ResponseUtil.badRequest(ctx, "缺少 token"); } // 更新用户信息