Alors que le danger de l'exposition des interfaces d'administration n'est (presque) plus à démontrer et que les défauts de contrôle d'accès raflent la première place du Top 10 de l'OWASP aux injections, l'analyse en profondeur ainsi que la compréhension des JWT (JSON Web Tokens) sont devenues un impératif.
1. Introduction
JWT est une norme open source (https://www.rfc-editor.org/rfc/rfc7519) définissant une manière compacte et autonome de transmission des données de manière sécurisée (cryptographiquement signées) entre plusieurs systèmes, le tout au format JSON (JavaScript Object Notation).
De par leur conception, les tokens JWT sont compacts et peuvent facilement être transmis par le biais d’une URL (GET), du corps d’une requête (POST) ou bien encore via un en-tête HTTP.
1.1 Structure des JWT
Un JWT se compose de trois sections :
- un en-tête (header) ;
- une charge utile (payload) ;
- une signature.
Chacune de ces parties est encodée en « base64url » (encodage base64 utilisant des caractères d'URL non réservés, par exemple, - est utilisé à la place de + et _ est utilisé à la place de /). Chaque section est quant à elle séparée par un point (.) :
Voici un exemple de JWT...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première