Vai depender muito do seu backend também, utilizando um sistema de access token e refresh token, não há problema algum em armazenar em um local storage. Se o token vazar, é só esperar um tempo que ele expira. E se vazar com certeza foi um erro do usuário, se você armazena no navegador do cara, a responsabilidade se torna dele.

Na pior das hipóteses uma boa prática seria criar uma 'lista negra' no seu backend onde todos os tokens que estiverem contidas nela, serão considerados inválidos. Essa é uma estratégia interessante para quando tiver algum tipo de acesso malicioso