如何在 Supabase 中安全实现用户“鼓掌”计数(防刷、防重放、防越权)

本文详解如何通过 rls 策略 + 合理数据建模,在 supabase 中安全实现用户交互式操作(如虚拟鼓掌),杜绝前端恶意请求篡改计数,兼顾安全性与可扩展性。 本文详解如何通过 rls 策略 + 合理数据建模,在 supabase 中安全实现用户交互式操作(如虚拟鼓掌),杜绝前端恶意请求篡改计数,兼顾安全性与可扩展性。在构建用户参与型功能(例如"鼓掌""点赞""收藏")时,仅依赖客户端身份认证(如 signInWithPassword)和简单的 RLS 读写控制是远远不够的。正如你所观察到的:即使启用了"仅限认证用户更新"的 RLS 策略,攻击者仍可通过浏览器控制台或 Postman 复用有效的 Authorization Bearer Token 和 apikey,反复发送伪造的 UPDATE 请求,无限刷高计数------这本质上是缺乏操作原子性、状态校验与行为约束所致。关键在于:不要直接更新计数字段(如 claps_count INT),而应记录每一次真实发生的用户行为事件。换言之,将"鼓掌"建模为一个不可变的、带上下文的原子操作(即插入一条记录),再通过聚合查询获取最终计数。这种设计天然支持防刷、限频、去重、审计与数据分析。? 推荐方案:事件表 + 强约束 RLS首先创建 claps 表,记录每次鼓掌的完整上下文:-- 创建鼓掌事件表(主键为 (post_id, user_id),天然防止重复鼓掌)create table if not exists public.claps ( post_id uuid references public.posts on delete cascade not null, user_id uuid references auth.users on delete cascade not null, created_at timestamp with time zone default timezone('utc'::text, now()) not null, PRIMARY KEY (post_id, user_id) -- 关键:联合主键确保单用户对单内容仅能鼓掌一次);-- 启用行级安全alter table public.claps enable row level security;-- 允许所有认证用户查询(如获取某文章总鼓掌数)create policy "Anyone can read claps"on claps for selectusing ( true );-- 仅允许用户为自己插入鼓掌记录(且不能伪造 user_id)create policy "Users can insert their own clap"on claps for insertwith check ( auth.uid() = user_id );? 为什么有效? Fotor AI Image Generator Fotor 平台的 AI 图片生成器

相关推荐
SelectDB3 小时前
从 StarRocks 走向 Apache Doris:如何实现引擎平滑替换与架构升级?
大数据·数据库·数据分析
为思念酝酿的痛3 小时前
MySQL的操作
数据库·mysql
猫咪很可爱4 小时前
Oracle ORA-4031 错误分析与处理:SGA 内存不足导致 update/exp/expdp 失败
数据库·oracle
KeepRobots4 小时前
11-01 温哥华不回拨:用 60 行 Python 查你的工单系统会不会差一小时(KeepRobots 工程笔记)
python
xiao77mwq4 小时前
你以为 OCR 慢?实测 81.3 s 里全是故障代价:如何把「定格态」消掉,让耗时从 6.5 s 到 13 倍差距显出原形
python
深圳市益普科技有限公司4 小时前
半导体良率管理YMS:良率与设备参数的相关性,先拉哪几组数据
人工智能·python·算法
“AI国潮设计-小江”4 小时前
【AIGC实战】Python+SDXL打造“潮汕英歌舞IP”万能立牌插件,批量生成“发财元宝蛋糕”视觉营销方案(附源码)
开发语言·人工智能·python·prompt·aigc
小豆庄5 小时前
视频素材处理时的隐私盲区:云处理与本地处理的边界在哪
数据库·图像处理·视频·敏捷流程
Umi·5 小时前
MySQL库表操作
数据库·mysql
砚底藏山河5 小时前
python量化实操:冷热分层存储
java·开发语言·python·金融