Validación de Passwords con Expresiones Regulares en MongoDB

Clase 10 de 22Curso de Modelado de Datos en MongoDB

Contenido del curso

Relaciones

Resumen

Las expresiones regulares son una de las herramientas más versátiles en programación, y cuando se combinan con la validación de schemas en MongoDB, permiten controlar con precisión qué datos se aceptan en una colección. Aquí se muestra cómo aplicar un pattern dentro del schema de una colección de usuarios para validar que el password cumpla con requisitos mínimos de seguridad.

¿Cómo se define un patrón de validación en el schema de MongoDB?

Dentro de la definición del schema de una colección, cada campo puede tener reglas adicionales. Para el campo password, que es de tipo string, se agrega la propiedad pattern [01:48]. Esta propiedad recibe una expresión regular que actúa como filtro: cualquier documento cuyo password no coincida con el patrón será rechazado automáticamente por MongoDB.

Un detalle importante es la forma en que se escribe la expresión regular dentro del schema. En lenguajes como JavaScript, las expresiones regulares se delimitan con slashes (/expresión/), pero en la validación de MongoDB se deben quitar esos slashes y escribir la expresión como un string normal entre comillas [02:18].

¿Qué significa cada parte de la expresión regular para el password?

La expresión regular utilizada sigue esta estructura:

  • ^ al inicio y $ al final: indican que la validación debe aplicarse a todo el string, no solo a una parte.
  • [A-Za-z0-9]: define los caracteres permitidos, es decir, letras mayúsculas de la A a la Z, letras minúsculas de la a a la z, y números del 0 al 9 [02:40].
  • {8,}: establece un tamaño mínimo de ocho caracteres. La coma sin un segundo número significa que no hay límite superior, permitiendo passwords tan largos como el usuario desee [03:18].

Esta combinación garantiza que el password tenga al menos ocho caracteres y contenga únicamente letras y números.

¿Qué sucede al insertar un documento con un password inválido?

Para probar la validación, primero se hace un drop de la colección de usuarios existente y se vuelve a crear con el nuevo schema que incluye el pattern [04:04]. Luego se intenta insertar un documento con un password corto, por ejemplo de menos de ocho caracteres.

MongoDB responde con un mensaje de documento inválido [05:08], lo que confirma que la expresión regular está funcionando correctamente. El password no cumple con la longitud mínima requerida por el patrón.

Al corregir el password para que contenga letras mayúsculas, minúsculas, números y al menos ocho caracteres, la inserción se realiza con éxito [05:26]. Haciendo un find sobre la colección se puede verificar que el documento fue almacenado correctamente.

¿Por qué las expresiones regulares son tan importantes en validación de datos?

Las expresiones regulares no se limitan a validar passwords. Con ellas se pueden verificar formatos de números telefónicos, direcciones de correo electrónico, códigos postales y cualquier otro dato que siga un patrón específico [05:56]. Su poder radica en que un solo pattern puede describir miles de combinaciones válidas.

Otro aspecto fundamental es su transversalidad [06:14]. Las expresiones regulares funcionan de forma casi idéntica en:

  • Bases de datos como MongoDB.
  • Lenguajes de programación como Python, JavaScript y PHP.
  • La terminal, para buscar archivos o texto.
  • El frontend, para validar inputs en formularios.

Aprender expresiones regulares una vez permite aplicarlas en múltiples contextos, lo que las convierte en una habilidad esencial para cualquier desarrollador.

Es importante recordar que guardar un password en texto plano no es seguro. En entornos de producción se debe encriptar el password y manejar procesos de autenticación adecuados, temas que se abordan en cursos de backend.

¿Ya utilizabas expresiones regulares en tus proyectos o es la primera vez que las aplicas dentro de un schema de MongoDB? Comparte tu experiencia en los comentarios.