Quên 1 Dòng WHERE, Khách A Thấy Đơn Hàng Khách B — Fix Bằng RLS

0 Views
⚡ Dùng Thử VIP Đang kích hoạt SponsorBlock & VIP: Tự động bỏ qua quảng cáo (30 phút dùng thử hôm nay)
⚡ SponsorBlock: Đã tự động bỏ qua phân đoạn tài trợ / quảng cáo!
Published
Quên một dòng WHERE tenant_id là đủ để khách A xem được đơn hàng của khách B. Row Level Security trong PostgreSQL cho database tự chặn chuyện này, kể cả khi code quên filter.

Trong 90 giây, video đi qua:
✅ Bật RLS và viết policy lọc theo tenant bằng current_setting
✅ Cách Supabase dùng đúng cơ chế này với JWT claims
✅ Bẫy 1: table owner mặc định bỏ qua RLS, phải dùng FORCE ROW LEVEL SECURITY
✅ Superuser bỏ qua RLS kể cả khi đã FORCE, nên app phải dùng role riêng
✅ Bẫy 2: chạy PgBouncer ở transaction mode thì dùng SET LOCAL thay cho SET

Phù hợp cho: lập trình viên đang xây SaaS multi-tenant trên PostgreSQL, hoặc đang dùng Supabase mà chưa hiểu bên dưới nó chặn dữ liệu thế nào.

Mẹo khi đưa vào code: dùng set_config(‘app.tenant_id’, @tenantId, true) để vừa truyền được tham số, vừa có hiệu lực giống SET LOCAL.

RLS không thay cho code cẩn thận. Nó là lưới an toàn cuối cùng. Tập sau: vì sao PostgreSQL gần như bắt buộc phải có connection pooler. Đăng ký kênh để không bỏ lỡ ????
Category
Học Lập Trình Trực Tuyến
Tags
teduco
Kênh Đối Tác 🔇 Đã Tắt Tiếng (Không Làm Phiền)
Trải Nghiệm YouTube Pro Không Gián Đoạn - Chất Lượng 4K
Được tài trợ bởi: Video Phim Pro
↗ Mở Xem Chi Tiết
💡 Video quảng cáo chạy tắt tiếng để lượt xem cho chủ kênh vẫn được tính đầy đủ trên hệ thống mà không làm gián đoạn bài giảng/bản nhạc bạn đang nghe.

Ưu đãi nổi bật

Đang tải…