| name | authz-per-resource |
| description | Toda query checa que o user é dono do recurso |
| roles | ["builder","reviewer","coordinator"] |
| category | domain |
Endpoint que retorna ou modifica recurso: sempre filtre por user_id (ou tenant_id em multi-tenant), mesmo se já validou ID via rota.
IDOR (Insecure Direct Object Reference) é o bug #1 de aplicações web.
Padrão:
job = Job.objects.get(id=job_id)
job = Job.objects.get(id=job_id, user_id=current_user.id)
Teste cobre acesso cruzado: user A não vê recurso de user B. Em SQL: RLS Postgres com policy obrigatória.