Régénérer des clés et des jetons d’API
- Rendez-vous sur la page « Apps » de la Console de développement.
- Cliquez sur l’icône « Keys and tokens » (🗝) à côté de l’App concernée.
- Cliquez sur le bouton « Regenerate » à côté de l’ensemble de clés et de jetons que vous souhaitez régénérer.
- Si vous souhaitez régénérer vos Access Tokens, vous devez d’abord invalider vos jetons à l’aide du point de terminaison POST oauth/invalidate_token, puis régénérer vos jetons à l’aide du flux OAuth en 3 étapes.
- Si vous souhaitez régénérer votre jeton Bearer, vous devez d’abord invalider votre jeton à l’aide du point de terminaison POST oauth2/invalidate_token, puis régénérer votre jeton à l’aide du point de terminaison POST oauth2/token.
Avoir un fichier central pour vos secrets
Variables d’environnement
Code source et contrôle de version
- Utilisez des variables d’environnement côté serveur. En stockant les clés d’API dans des variables d’environnement, vous les gardez en dehors de votre code et du contrôle de version. Cela vous permet aussi d’utiliser facilement différentes clés pour différents environnements.
- Utilisez un fichier de configuration exclu du contrôle de version. Ajoutez le nom du fichier à votre fichier .gitignore pour empêcher ce fichier d’être suivi par le contrôle de version.
- Si vous supprimez les clés d’API de votre code après l’avoir ajouté à un système de contrôle de version, il est probable que les clés d’API restent accessibles en récupérant les versions précédentes de votre base de code. Régénérez vos clés d’API, comme décrit dans la section suivante.
Bases de données
- Restreignez l’accès à la base de données de manière à ce que les jetons d’accès ne soient lisibles que par le propriétaire du jeton.
- Limitez les privilèges de modification/écriture sur la table de base de données contenant les jetons d’accès ; cela doit être automatisé via le système de gestion des clés.
- Chiffrez les jetons d’accès avant de les stocker dans tout stockage de données.
Outils de gestion de mots de passe
LocalStorage et SessionStorage. Ils ont été créés comme une amélioration par rapport à l’utilisation des cookies, car la capacité de stockage pour le stockage web est bien plus élevée que pour les cookies. Cependant, chaque option de stockage présente des avantages et des inconvénients différents.
Stockage web : LocalStorage
Tout ce qui est stocké dans le stockage web local est persistant. Cela signifie que les données persisteront jusqu’à ce qu’elles soient explicitement supprimées. Selon les besoins de votre projet, vous pouvez considérer cela comme un avantage. Toutefois, vous devez faire preuve de prudence avec LocalStorage, car toute modification ou tout ajout de données sera disponible lors de toutes les visites futures de la page web en question. Nous ne recommandons généralement pas d’utiliser LocalStorage, même s’il peut y avoir quelques exceptions à cette règle. Si vous décidez d’utiliser LocalStorage, il est utile de savoir qu’il respecte la politique de même origine (same-origin policy), donc toutes les données stockées ici ne seront disponibles qu’à partir de la même origine. Un avantage supplémentaire en termes de performances lorsque vous utilisez LocalStorage est la diminution du trafic client-serveur, puisque les données n’ont pas besoin d’être renvoyées au serveur pour chaque requête HTTP.
Stockage web : SessionStorage
SessionStorage est similaire à LocalStorage, mais la différence clé est que SessionStorage n’est pas persistant. Une fois la fenêtre (ou l’onglet, selon le navigateur que vous utilisez) qui a été utilisée pour écrire dans SessionStorage fermée, les données seront perdues. Cela est utile pour limiter l’accès en lecture à votre jeton au sein d’une session utilisateur. En matière de sécurité, l’utilisation de SessionStorage est généralement préférable à celle de LocalStorage. Comme pour LocalStorage, les avantages du support de la politique de même origine et de la réduction du trafic client-serveur s’appliquent également à SessionStorage.
Cookies
Les cookies sont la méthode la plus traditionnelle pour stocker des données de session. Vous pouvez définir une date d’expiration pour chaque cookie, ce qui facilite la révocabilité et la restriction de l’accès. Cependant, le trafic client-serveur augmentera nettement avec les cookies, puisque les données sont renvoyées au serveur pour chaque requête HTTP. Si vous décidez d’utiliser des cookies, vous devez vous protéger contre le détournement de session (session hijacking). Par défaut, les cookies sont envoyés en texte clair sur HTTP, ce qui rend leur contenu vulnérable à l’écoute de paquets (packet sniffing) et/ou aux attaques de type homme du milieu (man-in-the-middle), durant lesquelles des attaquants peuvent modifier votre trafic. Vous devez toujours imposer l’utilisation de HTTPS pour protéger vos données en transit. Cela fournira la confidentialité, l’intégrité (des données) et l’authentification. Cependant, si votre application ou votre site web est accessible à la fois via HTTP et HTTPS, vous devrez également utiliser l’indicateur « Secure » sur le cookie. Cela empêchera les attaquants de pouvoir envoyer à un utilisateur des liens vers la version HTTP de votre site et d’écouter la requête HTTP qui en résulterait.
Une autre défense secondaire contre le détournement de session lors de l’utilisation de cookies consiste à vérifier de nouveau l’identité de l’utilisateur avant toute action à fort impact. Un autre indicateur à envisager pour améliorer la sécurité de vos cookies est l’indicateur « HttpOnly ». Cet indicateur indique au navigateur que le cookie en question ne doit être accessible qu’à partir du serveur spécifié. Toute tentative d’accès effectuée par des scripts côté client sera interdite par cet indicateur, ce qui contribue à se protéger contre la plupart des attaques de type cross-site scripting (XSS).