Hướng dẫn bảo mật khi kết nối Lovable với các dịch vụ và công nghệ bên ngoài.
🧑🎓 Giải thích đơn giản: Supabase là 'kho chứa dữ liệu' phía sau app của bạn. Nó có 2 loại chìa khóa: anon key (chìa khóa khách — bị giới hạn quyền) và service_role key (chìa khóa chủ nhà — toàn quyền). Nếu lộ chìa khóa chủ nhà, hacker đọc/xóa được toàn bộ dữ liệu!
📋 Prompt để thực hiện:
Kiểm tra project đảm bảo: anon key chỉ dùng phía client, service_role key chỉ dùng trong Server Functions. Bật RLS cho mọi bảng. Thêm auth middleware verify user token trong mọi server function.
anon key (public)
Dùng phía client, bị giới hạn bởi RLS policies
service_role key (private)
Bypass RLS — CHỈ dùng phía server
// Trong server function, verify user
import { createServerFn } from "@tanstack/react-start";
import { createClient } from "@supabase/supabase-js";
const protectedAction = createServerFn({ method: "POST" })
.handler(async () => {
const supabase = createClient(
process.env.SUPABASE_URL!,
process.env.SUPABASE_SERVICE_ROLE_KEY!
);
// Verify token từ request headers
const { data: { user }, error } = await supabase.auth.getUser(token);
if (error || !user) throw new Error("Unauthorized");
// Tiếp tục xử lý...
});