Cuidados com JWT

jwt-logo

Sobrecarregando o JWT

O JWT pode conter informações, chamados de “claims”, mas se você colocar informações demais, o JWT vai deixar de ser leve, minando uma de suas vantagens.

Informações confidenciais

As informações do JWT ficam da seguinte forma:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

Não é tão legível para humanos, mas a informação está apenas codificada em base 64, que é fácil de decodificar. Por isso, ao passar informações sigilosas ou confidenciais, lembre se encriptar a informação.  Você pode usar o JWE (JSON Web Encryption), por exemplo, nesses casos.

JWT no cookie ou no Local Storage

Os cookies possuem certas vantagens, como ter a segurança já bem testada e serem fáceis de usar. Por outro lado, não podem ser usados para requisições em servidores com domínios diferentes, e são usados em todas as requisições, mesmo para recursos estáticos, aumentando a demanda de rede desnecessariamente.

Por outro lado, guardar o JWT no Local Storage pode dar mais liberdade para escolher quando usar o JWT via javascript. Pode também abrir espaço para scripts de terceiros carregados na página acessem o JWT, abrindo brechas na segurança.

Expiração do JWT

O JWT pode possuir um tempo de expiração. Quanto maior o tempo, mais o recurso que precisa dele ficará exposto. Além disso, a informação contida no JWT é estática, portanto pode ficar obsoleta se o JWT durar muito tempo. Lembre-se de ajustar o tempo para o menor possível.

Cuide da segurança

Não custa nada repetir. Mantenha as chaves para assinatura bem guardadas, sempre verifique a assinatura antes de confiar nos claims, verifique datas de emissão e expiração, use cookies com “Http-Only; secure”, use HTTPS/SSL, evite que o input do usuário possa conter scripts…

Não use para manter sessão do usuário

A respeito de sessão de usuários, muito já foi feito para deixar as implementações atuais mais seguras. A segurança é bem mais garantida e há diversas ferramentas já prontas para lidar com isso. Não é porque tem assinatura digital ou encriptação que o JWT será melhor para essa finalidade, você não precisa reinventar a roda.

Anúncios
Marcado com: , ,
Publicado em Microsserviços

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: