You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何防止第三方向Vercel无服务器函数发送非法请求?

问题分析与解决方案建议

核心问题本质

你当前的认证逻辑仅验证了用户身份合法性,但未验证分数来源的真实性——无法确认提交的分数是用户实际通过游戏产生,还是手动伪造的请求。这并非认证逻辑的根本性错误,但需要补充业务层面的防篡改校验。

无需完全重构认证逻辑,可通过以下方式修复:

1. 引入游戏会话令牌机制

  • 游戏开始时,后端生成与当前用户绑定的一次性游戏会话令牌,和JWT一同返回前端。该令牌仅能用于一次分数提交。
  • 游戏结束提交分数时,前端需同时携带JWT(验证身份)和会话令牌(验证是本次合法游戏的提交)。后端先校验JWT有效性,再检查会话令牌是否属于当前用户且未被使用,验证通过后处理分数,并标记令牌失效。

2. 对分数进行签名校验

  • 游戏结束计算出分数后,前端用前后端共享的临时密钥(密钥需通过游戏开始时的接口动态获取,不能硬编码在前端代码),对「分数+用户ID+游戏会话ID」进行HMAC签名。
  • 后端收到请求后,用相同密钥和算法重新计算签名,对比一致则处理分数,不一致直接拒绝。

3. 后端添加分数合理性校验

  • 根据游戏规则设置分数合理范围,比如单局最高上限、关卡分数阈值,超出范围直接拒绝提交。
  • 记录用户历史分数趋势,短时间内出现异常暴涨的分数(如从100分跳至10000分),触发人工审核或直接拒绝。

4. 强化Cookie安全属性

  • 将Cookie的SameSite设为Strict或Lax,限制Cookie仅在同域请求中发送,降低Postman等工具直接复用Cookie的可能性(注:用户仍可手动复制Cookie值,此为辅助手段)。
  • 开启Cookie的Secure属性,确保仅在HTTPS下传输,降低令牌被窃取的风险。

总结

无需完全重构现有的用户名认证逻辑,只需在游戏会话管理和分数校验层面补充机制,即可有效防止伪造分数的问题。这些方案均可在Vercel无服务器架构下实现,无需大幅改动现有代码结构。

内容的提问来源于stack exchange,提问作者Gabin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 18:19:55