国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

Supabase 安全防坑指南:你的 anon key 其實是透明的

0
分享至

Supabase 安全防坑指南:你的 anon key 其實是透明的


最佳策略,沒有絕對把握不要自己做用戶登錄和收付款。只需要抱大腿。比如在Steam,Apple,微信等平臺發(fā)布產(chǎn)品。

在使用 Supabase 開發(fā)項目時,我發(fā)現(xiàn)很多新手(包括早期的我)都會有一個誤區(qū):覺得只要把anon key藏在環(huán)境變量里就安全了。

但事實是:你的anon key根本不是秘密。它是發(fā)送給瀏覽器和客戶端的,任何人都能拿到。

Supabase 的安全護(hù)城河不在于隱藏這個 key,而在于你的RLS(行級安全策略)。

今天我整理了一份 Supabase 安全硬化指南,如果你正在用它做小項目,建議對照檢查。

核心風(fēng)險:那把“萬能鑰匙”

Supabase 提供了兩把鑰匙:

  1. anonkey:公開的。就像你家大門的把手,誰都能摸到。
  2. service_rolekey:超級管理員。它會繞過所有的 RLS 限制。絕對不能暴露在客戶端代碼里!

如果你的數(shù)據(jù)漏了,通常不是因為 key 被盜,而是因為你的 RLS 策略(Row Level Security)根本沒開,或者寫得太松。

常見的幾個“大坑”

在看代碼前,先看看這幾個典型的翻車現(xiàn)場:

  • 完全沒開啟 RLS:這是頭號死法。只要沒開,anon角色就能通過 REST API 讀寫所有數(shù)據(jù)。
  • 過于寬容的策略:比如FOR SELECT USING (true),這相當(dāng)于直接把數(shù)據(jù)表公開給全人類。
  • 盲目信任客戶端傳來的 User ID:如果你在策略里用user_id = request.body.user_id,黑客只需要改一下請求包里的 ID,就能看別人的數(shù)據(jù)。
動手硬化:小項目的 5 步安全策略 第一步:開啟 RLS,立刻,馬上!

在插入任何數(shù)據(jù)前,先執(zhí)行這一句。默認(rèn)情況下,開啟 RLS 但不寫 Policy,意味著“零訪問”。

ALTER TABLE your_table ENABLE ROW LEVEL SECURITY;
第二步:只信任auth.uid()

永遠(yuǎn)不要相信客戶端發(fā)來的 User ID。Supabase 的 JWT 是經(jīng)過驗證的,用auth.uid()才是防篡改的。

-- ? 安全做法:通過驗證后的 JWT 獲取當(dāng)前用戶 ID
CREATE POLICY "own_data_only" ON notes
  FOR ALL USING (auth.uid() = user_id)
  WITH CHECK (auth.uid() = user_id);
第三步:顯式限制anon角色

除非你明確需要公開,否則默認(rèn)應(yīng)該拒絕匿名訪問。比如,只允許匿名用戶讀取設(shè)為“公開”的文章:

-- 只允許讀取公開內(nèi)容
CREATE POLICY "public_posts" ON posts
  FOR SELECT USING (is_public = true);
第四步:使用SECURITY DEFINER函數(shù)

對于復(fù)雜的邏輯,建議寫成 Postgres 函數(shù)并放在服務(wù)端運行。

CREATE FUNCTION get_my_profile()
RETURNS json
LANGUAGE sql
SECURITY DEFINER  -- 以函數(shù)所有者權(quán)限運行,而非調(diào)用者
AS $$
  SELECT row_to_json(profiles) FROM profiles WHERE id = auth.uid();
$$;
第五步:別忘了 Storage 存儲桶

即便表鎖死了,如果 Storage Bucket 設(shè)為 Public,里面的文件依然是裸奔的。建議針對文件夾做 RLS:

-- 只允許用戶上傳到自己的文件夾
CREATE POLICY "user_folder_only" ON storage.objects
  FOR INSERT WITH CHECK (
    auth.uid()::text = (storage.foldername(name))[1]
  );
我的安全 CheckList

每次項目上線前,我會掃一遍清單:

  • 所有表都開啟了 RLS
  • 策略里全部使用auth.uid()
  • service_rolekey 只存在于服務(wù)端的.env
  • .env已經(jīng)加到了.gitignore
  • 在 Supabase Dashboard 的 Policy 模擬器里測過anon權(quán)限
  • 對敏感表禁用了 Realtime 實時訂閱
結(jié)語

記住 Supabase 安全的黃金法則:把你的anon key當(dāng)成完全公開的東西。你的安全模型必須完全建立在 RLS 策略和數(shù)據(jù)庫函數(shù)上。

如果你在做測試項目,最快的安全方案就是:給每張表都開 RLS,但不寫任何 Policy,直到你明確知道哪裡需要開放。

希望這些經(jīng)驗?zāi)軒湍惚荛_數(shù)據(jù)外泄的坑!

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點推薦
接下來你可能會見證人類歷史上最大規(guī)模的化債歷程。

接下來你可能會見證人類歷史上最大規(guī)模的化債歷程。

流蘇晚晴
2026-04-11 17:57:14
又死了一對一年賺200萬的

又死了一對一年賺200萬的

求實處
2026-04-11 22:29:22
老板娘說她屁股太大了,我該怎么回答?

老板娘說她屁股太大了,我該怎么回答?

太急張三瘋
2026-03-19 09:16:16
理想稱遭某品牌惡意拉踩將追究法律責(zé)任,東風(fēng)日產(chǎn)回應(yīng):尊重同行

理想稱遭某品牌惡意拉踩將追究法律責(zé)任,東風(fēng)日產(chǎn)回應(yīng):尊重同行

澎湃新聞
2026-04-12 04:46:55
特朗普威脅稱“將把伊朗的殘余力量終結(jié)”

特朗普威脅稱“將把伊朗的殘余力量終結(jié)”

界面新聞
2026-04-12 21:36:50
國內(nèi)套現(xiàn)7個億后,她露出了身后的美國國旗,整個家族共套現(xiàn)20億

國內(nèi)套現(xiàn)7個億后,她露出了身后的美國國旗,整個家族共套現(xiàn)20億

云舟史策
2026-04-11 07:54:43
突發(fā):王石被抓!?。?>
    </a>
        <h3>
      <a href=突發(fā):王石被抓!?。?/a> 大嘴説
2026-04-12 18:30:38
美國之恥:30分鐘滾出去。伊朗利用狼群戰(zhàn)術(shù),將美軍逼出霍爾木茲

美國之恥:30分鐘滾出去。伊朗利用狼群戰(zhàn)術(shù),將美軍逼出霍爾木茲

梁訊
2026-04-12 14:59:13
鄭麗文行程最后一天,還與雷軍罕見合影,并收到一份精美禮物

鄭麗文行程最后一天,還與雷軍罕見合影,并收到一份精美禮物

點點細(xì)語
2026-04-12 16:30:10
以色列解除緊急狀態(tài),內(nèi)塔尼亞胡腐敗案定于12日恢復(fù)審理,若受賄罪名成立或面臨最高10年監(jiān)禁

以色列解除緊急狀態(tài),內(nèi)塔尼亞胡腐敗案定于12日恢復(fù)審理,若受賄罪名成立或面臨最高10年監(jiān)禁

每日經(jīng)濟(jì)新聞
2026-04-12 20:42:30
蘇聯(lián)在抗美援朝戰(zhàn)爭援助了很多先進(jìn)武器,為什么沒有援助AK47?

蘇聯(lián)在抗美援朝戰(zhàn)爭援助了很多先進(jìn)武器,為什么沒有援助AK47?

知兵堂軍事
2026-04-11 09:49:59
巴西將比亞迪列入“恥辱名單”

巴西將比亞迪列入“恥辱名單”

深度報
2026-04-11 22:22:26
“我錯了,退休后不該去跳交誼舞”,丈夫:滾,離婚,我嫌臟

“我錯了,退休后不該去跳交誼舞”,丈夫:滾,離婚,我嫌臟

熱心柚子姐姐
2026-04-11 20:30:15
中央明確了!社保最低繳費年限要提高,70、80后得早做準(zhǔn)備

中央明確了!社保最低繳費年限要提高,70、80后得早做準(zhǔn)備

云鵬敘事
2026-04-12 16:36:39
深夜,全線跳水,超11萬人爆倉!

深夜,全線跳水,超11萬人爆倉!

每日經(jīng)濟(jì)新聞
2026-04-12 22:47:09
今天才知道,為啥鵝蛋很少有人吃?為啥賣鵝蛋的人很少?漲知識

今天才知道,為啥鵝蛋很少有人吃?為啥賣鵝蛋的人很少?漲知識

阿龍美食記
2026-04-12 15:01:18
匈牙利大選投票率創(chuàng)歷史新高,歐爾班前途未卜

匈牙利大選投票率創(chuàng)歷史新高,歐爾班前途未卜

山河路口
2026-04-12 18:38:44
昆凌素顏化妝畫面曝光!五官變化大到離譜,周杰倫見了都得愣三秒

昆凌素顏化妝畫面曝光!五官變化大到離譜,周杰倫見了都得愣三秒

觀魚聽雨
2026-04-12 20:28:25
快訊!鄭麗文太讓人吃驚了!

快訊!鄭麗文太讓人吃驚了!

達(dá)文西看世界
2026-04-12 19:38:07
天津超算中心10PB數(shù)據(jù)被盜:黑客用6個月搬空"國之重器"

天津超算中心10PB數(shù)據(jù)被盜:黑客用6個月搬空"國之重器"

碼上閑敘
2026-04-12 08:06:17
2026-04-13 03:48:49
教你畫像素畫 incentive-icons
教你畫像素畫
像素畫教程
2420文章數(shù) 12214關(guān)注度
往期回顧 全部

科技要聞

理想稱遭惡意拉踩,東風(fēng)日產(chǎn):尊重同行

頭條要聞

伊媒:美驅(qū)逐艦遭革命衛(wèi)隊鎖定 距離被摧毀僅差幾分鐘

頭條要聞

伊媒:美驅(qū)逐艦遭革命衛(wèi)隊鎖定 距離被摧毀僅差幾分鐘

體育要聞

創(chuàng)造歷史!五大聯(lián)賽首位女性主教練誕生

娛樂要聞

賭王女兒何超蕸病逝,常年和乳癌斗爭

財經(jīng)要聞

美伊談判破裂的三大癥結(jié)

汽車要聞

煥新極氪007/007GT上市 限時19.39萬起

態(tài)度原創(chuàng)

健康
時尚
手機
教育
數(shù)碼

干細(xì)胞抗衰4大誤區(qū),90%的人都中招

被周冬雨、林更新戴上熱搜的珠寶,究竟有多驚艷?

手機要聞

華為闊折疊設(shè)計圖曝光!這外觀你喜歡嗎?

教育要聞

小班教學(xué),9月開校,樹德派校長!這所中學(xué),正在招老師

數(shù)碼要聞

蘋果版套娃 買臺Mac Pro回家:打開一看里面還藏著一臺Mac Pro

無障礙瀏覽 進(jìn)入關(guān)懷版