Olá Pessoal tudo bem?
Pessoal hoje estou trazendo uma problemática importante na parte de segurança, estou desenvolvendo projeto usando tecnologia JavaScript M.E.A.N, gostaria de compartilhar e saber a opinião do pessoal sobre questões de segurança,
Segurança com JWT, bcrypt e simple-encrypt,
Usando o Json Web Token temos a certeza que o usuário passou pela autenticação e usando o interceptor o usuário será verificado a cada requisição ao nosso server,
Usando o bcrypt podemos criptografar a senha dos usuários evitando fraudes no lado do banco de dados,
Simple-encrypt para criptografia bidirecional de forma simplificada.
Qual problemática?
Desenvolver um sistema de log do usuário para registro e permissões das ações.
Solução Sugerida:
Marcar o usuário localStorage para saber qual tipo de usuário estamos tratando e suas permissões.
O localStorage, cookies ou sessionStorage são vulneráveis e os usuários podem manipular as informações armazenadas, então ai entra a criptografia bidimensional usando o simple-encrypt, a ideia é criptografar os dados e permissões do usuário e armazenar no localStorage, quando o usuário solicitar um recurso autenticado o interceptor verifica o token, documento de usuários do MongoDB garantindo a confiabilidade das informações de usuário e perfil (com criptografia reversa do simple-encryptor), então passamos com next()
para execução da API que verifica se o perfil do usuário que está na requisição possui permissão para tal ação e executa ou retorna acesso negado.
Vocês acham essa solução segura? alguém sabe alguma forma de burlar? existem soluções melhores? muito poder computacional gasto? alguma forma de otimizar?
Mais Informações:
Json Web Token (JWT): https://www.npmjs.com/package/jsonwebtoken
Bcrypt: https://www.npmjs.com/package/bcrypt
Simple Encryptor: https://www.npmjs.com/package/simple-encryptor
Atenciosamente,
Renan Lopes