Controlar un sistema es parte fundamental para garantizar un mejoramiento continuo del mismo. Los procesos de desarrollo no deberían ser ajenos a esta filosofía. Por esta razón vamos a ver algunos controles que deberían tenerse en cuenta para que una aplicación garantice la integridad y disponibilidad de la información y además se pueda mejorar progresivamente.

Hace poco publicábamos lo que muchos saben pero pocos aplican sobre desarrollo seguro, donde mencionamos aquellos aspectos a nivel general para lograr un desarrollo seguro y los beneficios para la empresa que pueden traer estos cambios.

En particular, para aquellos que están directamente relacionados con el desarrollo la responsabilidad es mayor pues finalmente son quienes atienden los requerimientos e implementan  las soluciones.

Por esta razón es recomendable tener en cuenta algunos controles en sus desarrollos para prevenir escenarios de falla posibles como el Coss Site Scripting (XSS), las inyecciones de código, la ejecución de códigos maliciosos y el Cross Site Request Forgery. Recordemos que OWASP publica un Top 10 de vulnerabilidades donde presentan los riesgos más críticos de aplicaciones web, junto con la forma de prevenirlos.

Los controles implementados dentro de los desarrollos deben asegurar la entrada, el procesamiento y la salida de información de forma que se cumpla con los niveles de confidencialidad, integridad y disponibilidad.

Por lo tanto deben implementarse controles preventivos diseñados para evitar la entrada de datos no autorizados o no válidos, controles de detección ayudan a identificar los sucesos no autorizadas o no válidos y los controles correctivos para ayudar en la recuperación de los sucesos no deseados.

Controles preventivos

Estos controles deben enfocarse en que la información ingresada sea precisa, y por lo tanto aquello que se registre en el sistema sea adecuado. Dentro de estos controles se pueden tener validaciones matemáticas a los dígitos ingresados, comprobar la integridad de los campos, verificar que no exista duplicidad en los datos, establecer rangos de validación e incluso comprobar que los valores de los campos sean razonables de acuerdo a un criterios predefinidos.

Controles de detección

Este tipo de controles que se aplican sobre el procesamiento de la información aseguran que las operaciones se hagan con la exactitud requerida y además los registros que se hagan sobre bases de datos u otros sistemas sean consistentes. Operaciones como la combinación de archivos, la modificación de datos, actualización de bases de datos o mantenimientos de sistemas son operaciones sensibles que deberían tener este tipo de controles.

Estas actividades de control pueden incluir la verificación de ejecución  de procesos, que durante de la ejecución si se presentan errores quede algún informe que pueda ser revisado junto con un registro de las operaciones realizadas sobre los diferentes sistemas. Además debería hacerse una copia de respaldo periódica y sobre todo cuando se ejecuten las tareas más sensibles.

Controles correctivos

Los controles de la información en la salida de la aplicación pueden resultar muy útiles para mantener la integridad de los datos. Lo interesante de este tipo de controles es que pueden integrarse con los controles preventivos de otra aplicación.

Independiente de los controles implementados, es muy importante además definir un adecuado plan de pruebas que no incluyan solamente las pruebas de aceptación por parte de los usuarios finales donde se evalúa la funcionalidad de la aplicación.

Además de usuarios finales deberían considerarse recursos del equipo de desarrollo para realizar pruebas de funcionalidad del código y de integración. Incluso si la aplicación es muy crítica para el negocio se podría considerar la alternativa de tercerizar las pruebas.

Lo más importante es que en la definición de estos controles tanto los usuarios finales, los administradores de red y personal de seguridad participen activamente desde las fases iniciales del proyecto, para lograr que sean los adecuados y faciliten la operación del negocio.

Imagen de Zoohouse en Wikimedia – Licencia CC BY-SA 2.5