0
votes

Comprendre la sécurisation des jetons d'accès et des jetons d'actualisation

Sur la base de cet article et de cette question , les jetons d'actualisation doivent durer longtemps et les jetons d'accès doivent être de courte durée. Je conserverais mon jeton d'actualisation pendant plus ou égal à 60 jours et mon jeton d'accès pendant 20 minutes ou plus / moins mais jamais plus d'une heure.

Mon principal problème pour comprendre l'utilisation de ces jetons est la méthode de stockage des deux jetons. Je comprends que je devrais stocker le jeton d'actualisation en tant que httpOnly rendant inaccessible via un script (attaques XSS) et stocker le jeton d'accès localement, localStorage ou sessionStorage pour une utilisation dans les appels d'API en tant que clé. Est-ce la bonne façon de procéder? Dois-je chiffrer davantage le jeton d'actualisation comme recommandé dans l'article? Tout aperçu serait très apprécié, merci pour la lecture.


0 commentaires

3 Réponses :


1
votes

Tout d'abord, vous devez comprendre que vous ne pouvez absolument rien faire pour empêcher l'extraction des jetons une fois que l'attaquant a mis la main sur l'agent utilisateur des victimes (navigateur). Aucun cryptage n'aidera. Vous auriez besoin de conserver la clé de cryptage quelque part sur le client, ce qui rend toute l'idée de cryptage IMHO inutile. Parfois, les gens sont obligés de crypter des trucs comme celui-ci parce qu'ils veulent que leurs petites sœurs n'y aient pas accès ou parce que les grandes entreprises ont des politiques stupides auxquelles vous devez vous conformer.

Je vois que vous êtes prêt à conserver le jeton d'actualisation dans un cookie. Ce n'est pas grave, assurez-vous simplement de mettre en place la bonne configuration. Cette présentation devrait aider .

Un dernier conseil. La sécurité de session ne concerne pas uniquement la sécurité de session. Vous devez également effectuer le TLS, la désinfection des données et le contrôle d'accès. Si vous oubliez TLS, aucune stratégie de stockage de jetons ne vous aidera.


0 commentaires

1
votes

Pour une meilleure sécurité + une architecture globale:

  • Les jetons d'accès doivent être stockés uniquement dans la mémoire du navigateur - pour être suffisamment sécurisés
  • Les jetons d'actualisation fonctionnent mieux dans les cookies - pour permettre des choses comme la navigation de l'application 1 à l'application 2 sans redirection

Comprendre les raisons est cependant assez profond, comme dans mes articles de blog ci-dessous:

Vous pouvez avoir des objectifs différents des miens. Heureux de répondre aux questions de suivi si cela vous aide.


2 commentaires

Merci de répondre. J'ai une question cependant. Lorsque vous parlez de la mémoire du navigateur, faites-vous référence au stockage en tant que variable js ou à l'utilisation de localStorage / sessionStorage?


Le stockage HTML5 augmente le risque de vol d'un jeton - il est donc généralement recommandé de l'éviter. Mon exemple de code montre comment cela peut être codé, et traite également des recharges de page, etc. Voir également cette page de didacticiel .



0
votes

Pour répondre directement à votre question: Non, il n'y a aucune raison de crypter un jeton d'actualisation.

La seule raison de crypter un cookie est s'il contient des informations qui doivent être protégées, comme un numéro de compte, un mot de passe, etc. Un jeton d'actualisation ne contient aucune donnée significative - c'est juste un long nombre aléatoire qui pointe vers une entrée dans magasin de données.


0 commentaires