AI Technical Project Manager | DevOps | Brand Builder | Researcher
I'm Umer Amin Durrani, an AI Technical Project Manager, DevOps practitioner, brand builder and researcher. I write about Linux, reliable systems, AI agents, software architecture and the decisions behind technical delivery. My work connects research, business goals and practical execution. US registered and mailing address: Umer Amin Durrani, 145 Tyee Dr, PMB 59738, Point Roberts, WA 98281, United States. Operations are based in Karachi, Pakistan.
Markdown supported · ⌘↵ to post
Ascendra Ventures
The /invoices/4821 example is the bug that shows up in almost every early SaaS review. Login passed, the session is valid, the invoice exists, and none of that says it belongs to this tenant. Hiding it in the frontend only means nobody has typed the number yet.
Resolving tenant context from server-side membership instead of a tenant_id in the request is the right default. I would add one habit: for every endpoint that reads or writes by ID, keep a test that logs in as tenant A and asks for something owned by tenant B. It is cheap, and it catches the one endpoint someone added in a hurry.
At Ascendra Ventures we put that cross-tenant check in the acceptance cases of any SaaS build, because retrofitting isolation after launch costs far more than designing for it in the first version.
Do you prefer enforcing this in the application layer, or pushing it down to row-level security in the database as a second line?