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

如何在Supabase中限制数据库函数RPC调用频率防止滥用

网页游戏投票防刷票解决方案建议

核心思路:从身份、频率、请求合法性三个维度堵漏洞

1. 绑定玩家身份,做唯一性限制

  • 投票接口必须强制验证玩家登录状态(用session、JWT均可),投票时后端要拿到玩家的唯一ID,不能只接收帖子UUID。
  • 在数据库中建一张votes记录表,字段至少包含player_id(玩家ID)、post_uuid(帖子UUID)、vote_time(投票时间),给player_id和post_uuid加联合唯一索引,确保同一个玩家永远只能给同一帖子投一次票——就算后端逻辑出问题,数据库也会直接拒绝重复提交。

2. 加请求频率限制,拦截批量操作

  • 单账号限流:用Redis或内存缓存记录每个玩家的投票时间戳,比如限制1分钟内最多投5次,超过频率直接返回“操作太频繁”。
  • IP辅助限流:配合玩家IP做补充限制,比如同一个IP1小时内最多允许20个不同账号投票,防止有人开大量小号刷票。

3. 放弃环境变量验证来源,改用请求合法性校验

环境变量是后端内部配置,客户端根本无法触及;如果是指检查Referer头验证来源,那这个值随便就能伪造,完全没用。正确做法是:

  • 给每个玩家+帖子生成一次性凭证:玩家打开帖子详情页时,后端生成一个和该玩家ID、帖子UUID绑定的vote_token返回给前端;投票时前端必须把这个token一起传给后端,后端验证token有效且未被使用过,才执行投票逻辑,用过的token直接作废。

4. 可选的补充反刷手段

  • 人机验证:对新注册玩家、短时间内投票次数达标的请求,触发滑块或字符验证码,拦截脚本批量请求。
  • 异常行为监控:后台统计投票数据,比如某帖子1分钟内收到大量同一IP的投票,或者同一个账号连续给不同帖子投票,直接标记为异常,自动冻结这些投票,等人工审核后再生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:20:02