Rexact
Cheatsheet

Regex jeton d'accès npm (npm_…)

Depuis septembre 2021, un jeton d'accès npm commence par « npm_ » (le tiret bas remplace le tiret pour qu'un double-clic sélectionne tout le jeton) et ses 6 derniers caractères sont une somme de contrôle CRC32 encodée en Base62 ; l'entropie passe de 128 à 178 bits (annonce de GitHub, propriétaire de npm). Les anciens jetons étaient des UUID de 36 caractères. La longueur du nouveau format n'est pas indiquée dans l'annonce : les trois détecteurs relus retiennent 36 caractères après le préfixe. Ils divergent sur le reste : gitleaks ignore la casse, secretlint accepte le tiret bas dans le corps, trufflehog accepte un corps de 40 caractères, et tous trois acceptent un jeton suivi d'un espace. Voici un motif ancré, comparé à ces outils.

/^npm_[A-Za-z0-9]{36}$/
passe 21/21 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^npm_[A-Za-z0-9]{36}$", "");
re.test(input);

Limites

  • Valide seulement la FORME : ne vérifie ni la somme de contrôle CRC32 des 6 derniers caractères, ni que le jeton existe ou est actif.
  • La longueur de 36 caractères après le préfixe n'est pas écrite dans l'annonce de GitHub : elle vient des détecteurs et d'un recoupement avec l'entropie annoncée. Les anciens jetons UUID (8-4-4-4-12 hexadécimaux), encore possibles dans de vieux fichiers, sont rejetés.
  • Un fichier .npmrc contient le jeton après « _authToken= » : extrayez-le avant de valider (la ligne entière est rejetée). Ne collez jamais un vrai jeton dans un outil en ligne.

Pages liées