หยุดปัญหาข้อมูล SaaS รั่วไหลใน Laravel
คุณทำธุรกิจ B2B SaaS คุณจำเป็นต้องแยกข้อมูลของลูกค้าแต่ละรายออกจากกัน
นักพัฒนาหลายคนใช้วิธีเพิ่ม tenant filter ด้วยตัวเอง โดยการเพิ่ม where clause เข้าไปในทุกๆ query
สิ่งนี้ทำให้เกิดความผิดพลาดจากมนุษย์ (human error) เช่น หากนักพัฒนาลืมเขียนโค้ดเพียงบรรทัดเดียวในรายงาน ผลที่ตามมาคือ Client A อาจเห็นข้อมูลของ Client B ซึ่งถือเป็นหายนะอย่างยิ่ง
เปลี่ยนมาใช้ระบบอัตโนมัติด้วย Global Query Scopes
นี่คือขั้นตอนการทำงาน:
สร้าง scope class: คลาสนี้จะทำหน้าที่ค้นหา tenant ID ปัจจุบัน และเพิ่ม filter เข้าไปในการค้นหาข้อมูลในฐานข้อมูลทุกครั้ง
สร้าง trait: trait นี้จะทำหน้าที่ลงทะเบียน scope และยังช่วยกำหนด tenant ID เมื่อคุณสร้าง record ใหม่ด้วย
นำ trait ไปใช้ใน models ของคุณ: วิธีนี้จะช่วยให้ controller ของคุณยังคงสะอาดและอ่านง่าย
ตอนนี้คุณจะมีเลเยอร์แบบ zero-trust แม้แต่การเรียกใช้งานง่ายๆ อย่าง Invoice::all() ก็ยังคงปลอดภัย
ความปลอดภัยได้กลายเป็นส่วนหนึ่งของการออกแบบระบบของคุณ ไม่ใช่แค่รายการตรวจสอบ (checklist) ที่ต้องคอยทำด้วยตัวเองอีกต่อไป
ที่มา: https://dev.to/iprajapatiparesh/prevent-saas-data-leaks-automated-eloquent-scopes-in-laravel-f6o