El punto final funciona cuando se introduce a mano y falla cuando se carga desde un archivo. Antes de rotar la contraseña, inspecciona cómo se lee el registro.

Un archivo orientado a líneas tiene un delimitador. Si el analizador deja su salto de línea final en el último campo, la credencial que se pasa al cliente puede diferir de la que pretendías. El CRLF al estilo de Windows hace que valga la pena comprobar dos bytes.

El file() de PHP admite FILE_IGNORE_NEW_LINES para leer registros sin su delimitador de fin de línea. Usa el comportamiento adecuado al formato documentado del archivo.

Ten cuidado con la popular corrección posterior: recortar cada campo. Los espacios pueden ser caracteres reales de la contraseña. Eliminar todos los espacios iniciales y finales cambia la credencial en lugar de limitarse a quitar un terminador de registro.

Define también los separadores. Un formato informal delimitado por dos puntos puede volverse ambiguo cuando la contraseña o una dirección IPv6 contiene dos puntos. Lee el registro según ese formato, conserva los bytes de contraseña previstos y solo entonces codifica los componentes para una URL de punto final si es necesario.

Para el diagnóstico, compara longitudes o valores de prueba controlados no secretos. Imprimir la contraseña real o una URL completa con credenciales crea otro problema mientras se resuelve un error de analizador muy pequeño.

Artículos relacionados