Imagina no poder usar un servicio de almacenamiento en la nube porque tu nombre provoca un fallo en el sistema; eso es lo que le ha ocurrido a Rachel True, cuyo apellido será familiar para cualquiera que sepa algo de programación.
Normalmente, los nombres de los usuarios no influyen en los programas y servicios que usan; son sólo otra variable más que almacenar en la base de datos. Sin embargo, eso es sólo así si todo funciona correctamente y los programadores no han cometido errores de novato.
Uno de estos errores consiste en no validar y escapar los datos obtenidos del usuario, una mala práctica que ya es casi imposible de encontrar, pero que aún sigue siendo un tropiezo común en algunos servicios.
El nombre que bloquea iCloud
Cuando Rachel True usa iCloud, el servicio de almacenamiento en la nube de Apple, recibe un error muy raro, que probablemente no habrán encontrado muchas personas.
Por culpa de este error, afirma que lleva seis meses con la cuenta ‘congelada’, ya que no puede usarla para nada, sin importar el dispositivo que use o cómo se conecte. Su primera sospecha, de que esto se trataba de un error de software y no de hardware, era correcta, como confirmaron programadores que contactaron con ella a través de Twitter.
El calvario de True se hizo viral en redes sociales y en sitios relacionados con programación, porque al ver el mensaje de error muchas personas inmediatamente se dieron cuenta de lo que estaba pasando; seguramente, porque lo habían sufrido antes en sus carnes.
Por qué ‘TRUE’ es especial
El mensaje de error fue el siguiente
REPORTED ERROR TITLE: Type error: cannot set value ‘true’ to property ‘lastName‘
Básicamente, el mensaje indica que es un error de tipo de dato, afirmando que el valor de la propiedad ‘lastName’ (apellido) no puede ser ‘true’. Pero, ¿por qué no? ¿significa eso que los que se apelliden True no pueden usar iCloud, u otros servicios.
TRUE es un tipo de valor especial, que se puede asignar a una “variable booleana”, o lógica. Este tipo de dato puede tomar dos valores diferentes: TRUE o FALSE, verdadero o falso, 1 o 0. Un ejemplo muy básico es una página web que nos pide aceptar los términos de servicio marcando una casilla; si la marcamos, una variable que se puede llamar “terminosAceptados” tomará el valor de TRUE.
Hay que aclarar que lo que se guarda no es la palabra “TRUE”, sino que el bit se “enciende” como 1; si fuese FALSE, el bit se “apaga” como 0.
En el caso de Apple, cuando el usuario introduce su apellido, este se guarda en la variable ‘lastName’, que sirve para almacenar cadenas de caracteres. El problema es que el sistema está interpretando el nombre “True” no como una cadena de caracteres, sino como el valor TRUE. Al intentar guardar un valor de variable “booleana” en la variable que sólo acepta caracteres, se produce el error.
Este es un fallo común, y tiene fácil solución; es un proceso conocido como “validar y escapar” los datos, que consiste en convertirlos a caracteres, eliminando código y partes innecesarias que podrían suponer un problema. Es una práctica ya aceptada en la industria, especialmente para evitar ataques hacker que intentan ejecutar código en el servicio, y por eso es muy extraño que Apple haya caído en el error de no implementarla.
Este incidente no deja muy bien a Apple, que al menos ya ha contactado con Rachel True, prometiendo que tendrán más noticias para esta semana; con suerte, para entonces habrán solucionado el problema.
Aunque en otros tiempos era muy común encontrarse con problemas al introducir datos en programas y apps, hoy en día las buenas prácticas se han extendido por todo el sector; pero aún quedan algunos servicios que no han sido corregidos.
También te puede interesar...
- Apple hace más fácil que olvides tus contraseñas: el llavero de iCloud llega a Chrome
- Una IA es capaz de identificar al programador que haya escrito una aplicación
- Este portátil de siete pantallas nos convierte en un hacker como los de las películas