Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Validación sintáctica y semántica

5 tareas · 35 min · Principiante

Validar no es buscar palabras peligrosas: es decidir qué forma y qué sentido tiene un dato correcto y rechazar todo lo demás. La Red de Bibliotecas Tinajacoa te entrega el alta de socios, la reserva de salas, sus reglas de servicio y dos semanas de registros. Hay personas que no pudieron inscribirse con su nombre real y reservas que ninguna sede puede cumplir. Se lee la validación como quien la va a reescribir.

0 de 5 · 0%

Objetivo de la sala

Validar no es buscar palabras peligrosas: es decidir qué forma y qué sentido tiene un dato correcto y rechazar todo lo demás. La Red de Bibliotecas Tinajacoa te entrega el alta de socios, la reserva de salas, sus reglas de servicio y dos semanas de registros. Hay personas que no pudieron inscribirse con su nombre real y reservas que ninguna sede puede cumplir. Se lee la validación como quien la va a reescribir.

Validar una entrada es comprobar, en el servidor y antes de usarla, que cumple lo que la aplicación espera. Esa comprobación tiene dos capas. La sintáctica mira la forma: tipo, longitud, juego de caracteres, formato (una fecha que se pueda leer como fecha, un documento hecho solo de dígitos). La semántica mira el sentido en este negocio: que la fecha de fin vaya después de la de inicio, que la sala exista, que la reserva no sea de un día que ya pasó. La hoja de referencia de validación de entrada de OWASP las separa así y pide las dos.

Un dato puede pasar la primera y fallar la segunda. «2026-11-06 11:00» es una fecha perfecta; como fin de una reserva que empieza a las 16:00 del mismo día no tiene sentido. Las validaciones que solo miran la forma dejan entrar datos bien escritos que rompen el negocio, y muchas veces es justo ahí donde vive el fraude o el error que nadie ve.

Responde para continuar

Una tienda acepta en el carrito una cantidad de -3 unidades porque el campo solo comprueba que sea un número entero. ¿Qué capa de validación falta?

Ver pista de ayuda

El valor está bien escrito como entero; lo que falla es lo que significa.

Abre el laboratorio y lee ReservaController.php en la carpeta tinajacoa-registro. El controlador comprueba que inicio y fin tengan el formato AAAA-MM-DD HH:MM y que la sala no venga vacía, y guarda. Cruza eso con reglas-del-servicio.txt, donde la coordinación dejó por escrito qué es una reserva válida, y revisa reservas-guardadas.csv fila por fila.

Responde para continuar

¿Qué reserva quedó guardada con una hora de fin anterior a la de inicio? Escribe su código.

Ver pista de ayuda

Compara las columnas inicio y fin de cada fila del mismo día.

Ahora aplica todas las reglas del servicio a las diez reservas: salas que existen, fin después del inicio, duración máxima, horario de las sedes y fecha que no haya pasado en el momento de crearla (la columna creada). Una reserva cuenta una sola vez aunque rompa más de una regla.

Responde para continuar

¿Cuántas reservas guardadas rompen al menos una regla del servicio?

Ver pista de ayuda

Para la fecha pasada compara el inicio con la columna creada, no con hoy.

RegistroController.php intenta frenar ataques con una lista de palabras prohibidas en el nombre y en el club. Esa lista no protege la base, porque la consulta ya va parametrizada y eso es lo que de verdad separa datos de instrucciones (la debilidad de fondo, CWE-20, es la validación ausente o incorrecta, no la falta de palabras prohibidas). Lo que sí hace es rechazar nombres legítimos y empujar a la gente a escribir su nombre mal para poder inscribirse. Lee rechazos-registro.log y busca a quien le pasó eso con un apellido real.

Responde para continuar

¿Qué solicitud de alta se rechazó por el apóstrofo de un apellido real? Escribe su código de solicitud.

Ver pista de ayuda

Mira qué palabra de la lista disparó cada rechazo y qué hizo la persona dos minutos después.

La alternativa a la lista negada es la lista de permitidos: describir lo que sí vale para cada campo y rechazar el resto. Para un municipio, una lista cerrada; para un documento, una expresión con longitud exacta; para un nombre, las letras de cualquier alfabeto con espacios, apóstrofos y guiones; para una reserva, las reglas del negocio en el servidor.

Responde para continuar

¿Qué cambio corrige a la vez los rechazos injustos y las reservas imposibles de Tinajacoa?

Ver pista de ayuda

Una lista de palabras malas nunca está completa y siempre atrapa a alguien inocente.

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