Dúvida: Leigo Criando Uma Api
Olá galera tudo bem? Como o título diz, realmente sou leigo em back estou iniciando os estudos agora. Mas vamos supor o seguinte cenário.
Eu faço uma requisição para API fazendo login no usuário DOG, então a API me retorna.
{
user:"DOG",
isAdmin: false
}
Mais tarde esse usuário resolve testar minha API e intercepta a resposta e muda o conteúdo de isAdmin para true, fazendo com ele ele tenha acesso a módulos restritos.
Como posso resolver esse problema?
A autenticação no front-end deve se limitar a exibição de rotas. Ou seja, se exite uma rota "financeiro" (por exemplo) e o usuário logado não é autenticado a ela, o ícone de acesso a essa rota não deve nem aparecer (ou aparecer mas desabilitado). Mas caso o usuário intercepte e passe a ter acesso, ao clicar, o front irá enviar requisições para o back (um GET inicialmente), e este método no back-end deve, de forma redundante, verificar os acessos do usuário para saber se ele pode ou não fazer essa requisição.
Assim, mesmo que o "isAdmin" seja interceptado, o usuário não consegue acessar dados sensíveis (não dessa forma).
O JWT (como já sugerido) é bem prático pra isso, nele você facilmente define qual perfil de usuário pode enviar determinado tipo de requisição para uma rota.
De forma bem resumida: não retorne a informação isAdmin
para o frontend. Faça a checagem no backend, sempre que o usuário tentar acessar algum recurso protegido.
Ou, em vez de retornar esse JSON, outra alternativa é usar um JWT Token que contenha os papéis do usuário (sendo "admin" um desses papéis). Isso tem prós e contras (como tudo em computação), então não deixe de ler aqui para mais detalhes.