Rexact
Cheatsheet

Regex jeton d'accès GitHub (ghp_, github_pat_…)

Depuis 2021, un jeton GitHub commence par un préfixe de trois lettres (gh + initiale du type : ghp personnel, gho OAuth, ghu utilisateur d'une application, ghs installation, ghr renouvellement) suivi de « _ ». GitHub écrit que le jeton est encodé en Base62 et que ses 6 derniers caractères sont une somme de contrôle CRC32 ; la longueur totale reste de 40 caractères, soit 36 après le préfixe. Les jetons à granularité fine commencent par github_pat_ ; leur longueur de 82 caractères après le préfixe n'est pas documentée par GitHub mais reprise par les détecteurs. Les quatre outils relus divergent : l'un ne couvre que ghp_, un autre ignore github_pat_, un troisième accepte de 36 à 255 caractères, et trois acceptent un tiret bas dans le corps, que l'alphabet Base62 exclut. Voici un motif ancré, comparé à ces outils.

/^(?:gh[pousr]_[A-Za-z0-9]{36}|github_pat_[A-Za-z0-9_]{82})$/
passe 24/24 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^(?:gh[pousr]_[A-Za-z0-9]{36}|github_pat_[A-Za-z0-9_]{82})$", "");
re.test(input);

Limites

  • Valide seulement la FORME : ne vérifie ni la somme de contrôle CRC32 (6 derniers caractères, encodée en Base62), ni que le jeton existe ou est encore actif. Un jeton bien formé mais inventé passe ce motif.
  • Seuls les formats à 40 caractères (préfixe + 36) et github_pat_ + 82 sont acceptés. GitHub annonce un nouveau format ghs_APPID_JWT pour les jetons d'installation d'applications, bien plus long : il est rejeté ici et demande un autre motif.
  • La longueur de 82 caractères de github_pat_ n'est pas documentée par GitHub (seul le préfixe l'est) : elle est reprise de gitleaks, trufflehog et secretlint et peut changer. Le motif exclut le tiret bas des jetons classiques, contrairement aux détecteurs, d'après l'encodage Base62 décrit par GitHub.
  • Ne collez jamais un vrai jeton dans un outil en ligne : utilisez des jetons factices pour vos tests. Pour détecter des jetons dans du texte, retirez les ancres et entourez de \b.

Pages liées