Le point de terminaison fonctionne saisi à la main et échoue lorsqu'il est chargé depuis un fichier. Avant de faire tourner le mot de passe, examinez comment l'enregistrement est lu.

Un fichier orienté lignes a un délimiteur. Si l'analyseur laisse son saut de ligne final dans le dernier champ, l'identifiant transmis au client peut différer de celui que vous vouliez. Le CRLF de style Windows rend deux octets dignes d'être vérifiés.

Le file() de PHP prend en charge FILE_IGNORE_NEW_LINES pour lire les enregistrements sans leur délimiteur de fin de ligne. Utilisez le comportement adapté au format documenté du fichier.

Méfiez-vous du correctif complémentaire populaire : rogner chaque champ. Les espaces peuvent être de vrais caractères du mot de passe. Supprimer tous les espaces de début et de fin modifie l'identifiant au lieu de simplement retirer un terminateur d'enregistrement.

Définissez aussi les séparateurs. Un format informel délimité par des deux-points peut devenir ambigu lorsque le mot de passe ou une adresse IPv6 contient des deux-points. Lisez l'enregistrement selon ce format, conservez les octets de mot de passe prévus, et seulement ensuite encodez les composants pour une URL de point de terminaison si nécessaire.

Pour le diagnostic, comparez des longueurs ou des valeurs de test contrôlées non secrètes. Imprimer le vrai mot de passe ou une URL complète porteuse d'identifiants crée un autre problème pendant que l'on résout une très petite erreur d'analyseur.

Articles similaires