revisedRandomId.jsMath.random() de JavaScript, exploitant le système de numération en base 36. Le résultat est une chaîne de 10 caractères composée de chiffres et de lettres minuscules (0-9, a-f plus g-z), débarrassée de tout artefact non alphanumérique. Utilisée par le frontend pour créer des identifiants transitoires et résistants aux collisions pour les éléments d'interface utilisateur comme les notifications toast, les nœuds DOM insérés dynamiquement et les clés temporaires de listes qui ne nécessitent pas de caractère aléatoire cryptographique.
La fonction enchaîne trois opérations : Math.random().toString(36) convertit un nombre flottant aléatoire en représentation base 36 (produisant une chaîne comme 0.4kzy9x2n7fl), .replace(/[^a-z0-9]+/g, '') supprime le 0. initial et tout autre artefact non alphanumérique, et .substr(1, 10) extrait les caractères à partir de l'index 1 pour obtenir un résultat de 10 caractères. Le décalage de départ de 1 ignore le zéro non significatif qui subsiste après la suppression du point décimal.
Cette fonction n'est intentionnellement pas sécurisée sur le plan cryptographique. Elle est utilisée pour des identifiants au niveau de l'interface utilisateur (clés de toast, clés de liste React) où les collisions ne provoqueraient qu'un problème de réconciliation React, et non une vulnérabilité de sécurité. Le compromis est la rapidité et la simplicité — pas de surcharge de l'API crypto et aucune dépendance à la disponibilité de window.crypto.
| Commit | Ce qui a changé |
|---|---|
993957ec7 |
Deux améliorations dans la génération d'ID aléatoires : (1) la classe de caractères regex a été étendue de [^a-z]+ à [^a-z0-9]+, garantissant que les chiffres sont conservés lors du filtrage, ce qui augmente l'espace d'ID de 26^n à 36^n ; (2) l'index de départ de substr est passé de 2 à 1, gagnant ainsi un caractère d'entropie supplémentaire au lieu de le jeter. Les deux modifications faisaient partie de l'implémentation du système d'actions toast, où des ID plus robustes étaient nécessaires. |
6cf072707 |
Création du fichier avec l'implémentation initiale du générateur d'ID aléatoires. Utilisait substr(2, 10) et la regex [^a-z]+ — une approche plus conservative qui produisait uniquement des ID alphabétiques minuscules d'exactement 10 caractères. |