Autenticação e autorização: qual é a diferença?
Entenda login, sessão, token, autorização e princípio do menor privilégio em aplicações Web.
Autenticação responde quem é
Login por senha, magic link ou provedor social é um processo de autenticação: o sistema verifica uma identidade. Depois disso costuma existir uma sessão, representada por cookies ou tokens, para que o usuário não precise se autenticar a cada clique.
Autorização responde o que pode fazer
Um usuário autenticado não deve automaticamente acessar todos os dados. Autorização verifica permissões para a operação específica. Um aluno pode ver o próprio progresso, mas não o progresso de outro aluno. Um administrador pode ter ações adicionais. Essa separação evita falhas de controle de acesso.
O frontend não é uma barreira de segurança
Esconder um botão não protege um endpoint. Um atacante pode chamar a API diretamente. Regras sensíveis precisam existir no servidor ou no banco, com checagem de identidade e propriedade. Row Level Security é um exemplo de mecanismo para restringir linhas no banco.
Segredos e senhas
Senhas não devem ser armazenadas em texto puro. Serviços de autenticação usam funções de hash apropriadas. Chaves privadas e tokens de servidor não devem ser enviados ao navegador. O princípio do menor privilégio reduz impacto caso uma credencial seja comprometida.
Teste acessos indevidos
Uma revisão de segurança deve testar o caminho negativo: usuário A consegue consultar registro de B? Um estudante chama uma função administrativa? Um token expirado ainda funciona? Segurança ganha confiabilidade quando os bloqueios são verificados, não apenas presumidos.