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

如何配置Supabase仅允许指定域名通过Anon Key访问DataAPI?

配置Supabase仅允许指定域名通过Anon Key访问数据

要实现仅允许www.abc.com通过Anon Key访问数据,需要结合Supabase的来源白名单配置和行级安全(RLS)规则,双重限制才能有效阻止非授权请求。

1. 配置项目允许的来源(CORS限制)

这一步先从请求层面阻止跨域请求,只有指定域名的浏览器请求能通过CORS校验:

  • 登录Supabase控制台,进入目标项目
  • 导航到Settings > API页面
  • 在Allowed Origins列表中,只保留https://www.abc.com,删除默认的*或其他无关域名(本地开发可临时添加http://localhost:xxxx,上线后移除)
  • 保存设置,此时非www.abc.com的浏览器请求会被CORS拦截,但Postman等工具可伪造请求头,因此必须配合RLS规则。

2. 启用行级安全(RLS)并添加来源验证规则

RLS是数据库层面的限制,能确保即使请求绕过CORS,也无法读取数据:

第一步:为目标表启用RLS

对每个需要保护的表执行以下SQL(在Supabase控制台的SQL Editor中运行):

ALTER TABLE your_table_name ENABLE ROW LEVEL SECURITY;

替换your_table_name为实际表名,若有多个表需逐一执行。

第二步:创建验证Referer头的RLS策略

执行以下SQL创建策略,仅允许来自www.abc.com的请求访问数据:

CREATE POLICY "Restrict access to www.abc.com only" ON your_table_name
FOR ALL USING (
  current_setting('request.headers.referer', true) LIKE 'https://www.abc.com%'
);
  • current_setting('request.headers.referer', true)会获取请求的Referer头
  • LIKE 'https://www.abc.com%'确保请求来源是该域名及其子路径,非匹配请求会被拒绝

3. 存储桶(Storage)的额外配置

若需要限制存储资源的访问,同样要为存储桶添加RLS规则:

CREATE POLICY "Restrict storage access to www.abc.com" ON storage.objects
FOR ALL USING (
  current_setting('request.headers.referer', true) LIKE 'https://www.abc.com%'
);

关键注意事项

  • Postman等工具可手动伪造Referer头,但这种场景下攻击者必须知晓目标域名,且无法在浏览器环境中发起非授权请求(浏览器会自动校验Referer的合法性)
  • 确保Supabase JS SDK仅在www.abc.com的前端页面加载,避免Anon Key被泄露到其他环境
  • 若需要更严格的验证,可结合JWT自定义声明,但会增加复杂度,当前方案已满足基础的域名限制需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 02:16:01