Vou responder o que eu sei, já que nada sei sobre o Tabnews em si.
Essa escolha foi feita porque as permissões editáveis não afetam diretamente a plataforma?
Espero que sim.
Existe uma máxima (algumas pessoas chamam de boa prática) que tudo o que for fazer no servidor deve ser validado nele. Não deve confiar em nada que está do lado do cliente, a não ser algo que só afete o cliente.
Então se só afeta o cliente, está tudo bem.
Se pega do cliente para facilitar, mas no momento que vai fazer algo importante no servidor a autorização é dada lá, e o que está no cliente não é levado em consideração, ou seja, se você modificar na mão, não importa, não será usado no servidor para te dar alguma autorização de acesso lá.
Isso me lembra as pessoas querendo disfarçar o id
de um item que está no banco de dados para ninguém modificar o que não pode. Mas isso não protege nada. Pode até ficar mais difícil descobrir um id
válido, mas se achar, fará o estrago. Isso chama-se segurança por obscuridade, que pode ser usada em conjunto outra melhor, mas nunca sozinha, e em alguns casos não faz sentido nem junta. Então você pode usar o id
mais simples que puder, só cuide para que a autorização seja efetiva, ou seja, antes de fazer qualquer ação, mínima que seja, você verifique se quem pediu para fazer tem autorização para fazer isso. A forma de fazer pode variar, mas deve ser uma forma segura.
Essa abordagem é considerada uma boa prática?
Eu sempre explico que "boa prática" é uma regra que alguém inventou para empurrar para outras pessoas o que ela não quer explicar. Pode ser bom ou não, a explicação daria uma informação melhor. Se tiver uma boa explicação então passar ser conhecimento e não é mais "boa prática".
Se não causa problemas, é uma prática adequada. Se causa, claramente é uma prática errada. Então não importa se é boa prática ou não, importa se funciona corretamente, atendendo todas as necessidades, neste casos, em especial, de segurança. Também pode envolver UX ou otimização. Portanto se essa autorização só afeta o cliente ou se afetar o servidor é feito uma autorização lá, e tem a informação redundante no cliente só para facilitar para ele, quem sabe para melhorar a experiência do usuário, ou diminuir os acesso ao servidor, então está tudo bem, é algo que poderia ser recomendado.
Seria uma alternativa mais segura usar as permissões em um token JWT?
Pelo que está descrevendo não há ligação, você só precisaria de algum token para manter a conversa com o servidor autenticada. Qualquer forma de token tem uma informação para que suas comunicações possuam uma assinatura, uma forma de verificar que partiram de você que já foi autenticado antes. Não é para ter uma informação de autorização (até pode existir em ambientes que você confia na outra parte, o que quase nunca deveria acontecer, até porque não costuma ter vantagem em fazer isso).
Faz sentido para você?
Espero ter ajudado.
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).