Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Normalizar antes de validar

5 tareas · 40 min · Principiante

Un mismo texto se puede escribir de varias maneras que la pantalla muestra iguales. Si la aplicación valida una forma y guarda otra, la validación revisó un dato que no es el que se usa. En Tinajacoa los socios eligen un alias para firmar reseñas y hay nombres reservados para el personal; aun así apareció una reseña firmada por uno de ellos. Se lee el orden de las operaciones en el código y en el registro de altas.

0 de 5 · 0%

Objetivo de la sala

Un mismo texto se puede escribir de varias maneras que la pantalla muestra iguales. Si la aplicación valida una forma y guarda otra, la validación revisó un dato que no es el que se usa. En Tinajacoa los socios eligen un alias para firmar reseñas y hay nombres reservados para el personal; aun así apareció una reseña firmada por uno de ellos. Se lee el orden de las operaciones en el código y en el registro de altas.

Antes de comparar un texto con una regla hay que llevarlo a su forma canónica: decodificar lo que venga codificado por el protocolo una sola vez, aplicar la misma normalización de Unicode que se usará después y pasar a minúsculas si la comparación no distingue mayúsculas. Solo entonces se valida, y se guarda y se usa exactamente ese valor. La hoja de referencia de validación de OWASP lo pide en ese orden: validar la forma decodificada que de verdad se va a usar, no una que se transforma otra vez más adelante.

MITRE tiene una entrada para el error contrario: CWE-180, validar antes de canonicalizar. Si la transformación ocurre después de la comprobación, un valor que la regla habría rechazado puede aparecer recién al final, cuando ya nadie lo revisa. La normalización de compatibilidad de Unicode (NFKC) es un ejemplo típico: convierte letras de ancho completo, ligaduras y otras variantes en su forma básica.

Responde para continuar

Un servicio compara el valor recibido con una lista de nombres reservados y, ya aceptado, lo normaliza a NFKC y lo pasa a minúsculas al guardarlo. ¿Cuál es el fallo?

Ver pista de ayuda

Pregúntate qué valor vio la regla y qué valor llegó a la tabla.

Abre el laboratorio y lee AliasService.php y AliasRepositorio.php en la carpeta tinajacoa-alias. El servicio recorta espacios, compara con strtolower (que solo cambia letras ASCII) y valida el formato con una expresión que acepta letras de cualquier alfabeto. El repositorio, al guardar, normaliza a NFKC y pasa a minúsculas. Luego recorre registro-alias.log: la columna no_ascii dice qué puntos de código fuera de ASCII traía cada valor, y la columna guardado dice cómo quedó en la base.

Responde para continuar

¿Qué socio terminó con un alias guardado idéntico a uno de los nombres reservados? Escribe su código de socio.

Ver pista de ayuda

Busca valores de ancho completo (U+FF..) que el servicio aceptó.

Para dimensionar el problema no basta con el caso grave: hay que saber cuántas veces la validación vio un valor y la base guardó otro. Cuenta las líneas con resultado guardado en las que el texto guardado no es idéntico al recibido (un cambio de mayúsculas también cuenta). No cuentes los rechazos ni el error de duplicado.

Responde para continuar

¿En cuántas altas guardadas el alias que quedó en la base es distinto del que revisó la validación?

Ver pista de ayuda

Compara columna recibido con columna guardado solo en las líneas guardadas.

NFKC une variantes del mismo carácter, pero no une letras de alfabetos distintos que se ven iguales. Una «е» cirílica (U+0435) y una «e» latina son caracteres diferentes para Unicode, y ninguna normalización convierte una en la otra. Para eso existen las comprobaciones de caracteres confundibles que describe el estándar técnico de Unicode sobre mecanismos de seguridad (UTS #39), o la decisión más simple de limitar los alias a un solo alfabeto.

Responde para continuar

¿Qué socio guardó un alias que se lee igual que un nombre reservado y que la normalización dejó intacto? Escribe su código de socio.

Ver pista de ayuda

Busca un valor guardado igual al recibido que tenga un punto de código cirílico.

El error de duplicado de BTJ-30176 cuenta la misma historia desde otro lado: el servicio aceptó el valor y fue la base, al normalizar, la que descubrió que ya existía. El arreglo pone la normalización en un solo sitio, al principio.

Responde para continuar

¿Qué orden de operaciones corrige el servicio de alias de Tinajacoa?

Ver pista de ayuda

La regla debe ver el mismo valor que la tabla.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad