Expresiones Regulares y Sanitización de datos en Elixir pero práctico

Expresiones Regulares y Sanitización de datos en Elixir pero práctico

Las expresiones regulares, comúnmente conocidas como regex, son una poderosa herramienta para manipular y validar cadenas de texto. En este artículo, vamos a explorar cómo utilizar expresiones regulares en el contexto de Elixir. Además, aprenderemos técnicas para sanitizar datos de manera eficiente y segura.

Expresiones Regulares en Elixir

Elixir proporciona soporte nativo para expresiones regulares a través del módulo Regex. Para empezar, primero necesitas compilar tu expresión regular usando ~r y luego puedes usar funciones como Regex.match?/2 para verificar si una cadena cumple con el patrón dado. Por ejemplo:

regex = ~r/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/
email = "ejemplo@dominio.com"

if Regex.match?(regex, email) do
  IO.puts("La dirección de correo electrónico es válida.")
else
  IO.puts("La dirección de correo electrónico no es válida.")
end
Comparando un email para ver si el formato es valido

En este ejemplo, la expresión regular valida direcciones de correo electrónico. Puedes ajustar el patrón regex según tus necesidades específicas.

¿Porqué debemos sanitizar los datos?

La sanitización de datos es crucial para prevenir vulnerabilidades como inyecciones de código y ataques XSS. Elixir proporciona una forma segura y eficiente de sanitizar datos utilizando el concepto de Ecto.Changeset.

Utilizando Ecto.Changeset para Sanitización:

Ecto.Changeset es una estructura que representa un conjunto de cambios a aplicar a un conjunto de datos. Además de las validaciones, puedes utilizar Ecto.Changeset para castear y sanitizar datos automáticamente. Por ejemplo, supongamos que tienes un formulario con campos :nombre y :descripcion:

changeset = %YourApp.YourSchema{}
            |> YourApp.YourSchema.changeset(params)
            |> Ecto.Changeset.cast([:nombre, :descripcion], with: &sanitize_string/1)

La función sanitize_string/1 es una función personalizada que puedes definir para sanitizar las cadenas de texto. Aquí hay un ejemplo básico:

def sanitize_string(value) do
  value
  |> String.replace(~r/<script.*?>.*?<\/script>/, "")
  |> String.strip()
end

En este ejemplo, sanitize_string/1 elimina cualquier script malicioso y espacios en blanco innecesarios de la cadena.

Conclusión

Las expresiones regulares son una herramienta poderosa para la manipulación de cadenas de texto, y Elixir proporciona un sólido soporte para ellas a través del módulo Regex. Al combinar el uso adecuado de expresiones regulares con técnicas como Ecto.Changeset para sanitizar datos, puedes garantizar que tus aplicaciones Elixir sean seguras y estén protegidas contra vulnerabilidades comunes. Recuerda siempre validar y sanitizar los datos de entrada para mantener la integridad y seguridad de tus aplicaciones.

Espero que esta guía te haya proporcionado información útil sobre cómo trabajar con expresiones regulares y sanitizar datos en Elixir.

¡Buena suerte en tus proyectos de desarrollo!