Columnas de opinión, Noticias

App seguras: La importancia de validar inputs

abril 4, 2023
Columna de opinión por Diego Vargas, especialista en ciberseguridad de NIVEL4.

Un paso crucial para desarrollar una app segura, una página web segura o un software seguro, es la validación de inputs. ¿En qué consiste esto?

Es el chequeo de que la data entregada por un usuario, generados automáticamente o consultados a una base de datos, cumple con el formato correcto y con reglas establecidas. 

Se trata de un punto clave para la seguridad de la información. Existe una gran variedad de vulnerabilidades que surgen debido a la ausencia o una mala implementación de estos controles. Asimismo, la dificultad de muchos potenciales ataques se vería enormemente incrementada utilizando una simple validación.

Su objetivo es evitar errores y comportamientos no esperados ni deseados en el sistema. Nos ayudan a controlar el formato de los parámetros que utilizamos, verificando que se encuentren dentro de los límites requeridos y que sean seguros de usar.

Para un usuario legítimo, la ausencia de estos controles puede significar una mera molestia o una mala experiencia de usuario, para un usuario malicioso es una puerta que les permite realizar un ciberataque. Un error de este tipo puede permitir a un atacante explotar una gran variedad de inyecciones, controlar flujos de ejecución, forzar la exfiltración de datos, detener procesos, denegar servicios, entre muchos otros ataques posibles.

¿Cómo se realiza una validación de inputs?

Se puede usar filtros que acepten o rechacen los valores en base a ciertas reglas predefinidas, o también utilizar métodos de sanitización que conviertan el contenido riesgoso a valores seguros de usar. Un ejemplo de esto último es codificar o escapar caracteres, truncar valores, aplicar expresiones regulares, entre otros. 

Para que este proceso funcione y nos permita cerrar la puerta a ciberataques, es clave no cometer errores en el proceso. Uno de los descuidos más comunes es implementarlos únicamente en el frontend, dejando al backend configurado para confiar en todos los inputs.

Es decir, todas las validaciones, filtros y correcciones se realizan en el navegador o aplicación del usuario, y luego se asume que no es necesario volver a hacerlo en el servidor. Desde el punto de vista de la seguridad, esto es equivalente a no tener validación de inputs, dado que un atacante puede fácilmente interceptar la comunicación entre el frontend y el backend, modificar los mensajes enviados entre ellos, e insertar valores que se escapen de las condiciones impuestas por el frontend.

Hay que tener en cuenta que las validaciones en el frontend tienen un objetivo distinto a las del backend. Las primeras se utilizan para guiar al usuario a usar el aplicativo correctamente, ingresando los datos en el formato esperado y ayudando a mejorar la experiencia de usuario. El segundo se encarga del manejo seguro de los parámetros en el sistema, evita que se corrompa o modifique el flujo de ejecución, y restringe fuertemente el tipo de ataques que se pueden ejecutar.

La forma más efectiva de impedir que estas vulnerabilidades surjan en los sistemas que estamos implementando es realizar las validaciones en el mismo servidor, antes de ejecutar cualquier proceso o acción que requiera de un input externo. Debemos asegurarnos de que todos los campos sean validados o sanitizados antes de utilizarlos, y no permitir la evasión de estos controles de ninguna manera.

La validación de inputs es un paso importante en el flujo de todo software. Nos permite tener control sobre los parámetros que ingresamos y ayuda a mitigar la explotación de múltiples vulnerabilidades. Debe ser una parte esencial de la arquitectura de nuestra aplicación, pero no debemos depender únicamente de ella. Es esencial ser proactivos en la implementación de medidas de seguridad para evitar vulnerabilidades en cada una de las capas del sistema.

No preocuparse con cuidado de validar los inputs genera vulnerabilidades que pueden perjudicar fuertemente la confidencialidad, integridad o disponibilidad del sistema. Es por eso que se trata de un paso tan importante para el flujo de todo software y que debe ser parte esencial de la arquitectura de nuestra aplicación, pero no debemos depender únicamente de ella. Es esencial ser proactivos en la implementación de medidas de seguridad para evitar vulnerabilidades en cada una de las capas del sistema.

La ciberseguridad es hoy. Asegura tu compañía, protege a las personas.

appinputs

Comparte este Artículo

Artículos relacionados