Desarrollo de aplicaciones – Errores de seguridad comunes en el desarrollo de aplicaciones web

En el desarrollo de aplicaciones web existir un gran número de detalles que deben cuidar, pero con el ambiente que se vive hoy en día hay ciertos errores de seguridad que deben evitar y no deben cometer nunca, pues podrían ser vulneradas. De esta forma, existe la posibilidad de que hackers o virus puedan afectar el funcionamiento de la aplicación o robar información valiosa.

Desarrollo de sus propios métodos de seguridad

 

Algunos encargados del desarrollo de aplicaciones hacen suposición errónea de que un algoritmo de cosecha propia para el método de autenticación en realidad hará más seguro. Después de todo, los hackers nunca lo han visto antes, así que tendrían más problemas en romperlo. Esto es incorrecto. Desarrollar su propio método de autenticación o métodos de entrada es un error porque usted hará errores que hacker descubrirá dice James Keley, un experto de pruebas de penetración.

¿Por qué son las librarías existentes son más seguras? Porque se ponen a pruebas de penetración constantemente por la comunidad de seguridad. Como tales, son menos propensos a incluir grandes agujeros de seguridad que una persona pueda pasar por alto. El acceso a la base de datos directamente con la información suministrada por el usuario. Al desarrollo de aplicaciones, en particular una aplicación web muchos desarrolladores no adecuadamente validan los datos que reciben de los usuarios.

Este es un problema de sanidad de datos, ya que podría invalidar toda su base de datos, pero aún tiene mayores implicaciones de seguridad. Según consultores de empresa de seguridad informática, si no validen las entradas, los ataques de cross site scripting, inyección de SQL, desbordamiento de búfer y otros ataques comunes puedan suceder. Este es uno de los errores más comunes que se encuentran en el desarrollo de aplicaciones web como los hackers pueden utilizar campos de entrada para inyectar código malicioso en su aplicación y acceder base de datos. Por supuesto, la mayoría de los usuarios nunca va a intentar nada malicioso, pero hay que acercarse a la entrada de datos con una mentalidad defensiva.

Centrarse en los componentes y no el sistema completo

Con grandes proyectos de desarrollo, donde varios encargados del desarrollo de aplicaciones trabajan en diferentes partes de una aplicación, hay una tendencia a centrarse en los componentes individuales en lugar de en el sistema completo. Cada parte puede ser segura, pero qué tan seguras estén juntas. Por lo tanto es importante comprobar la seguridad del sistema completo.

Adición de seguridad en el desarrollo final

Adición de seguridad en la fase final de su desarrollo de aplicaciones podría ser un problema. No es algo que simplemente puede añadir al término de desarrollo. Es una función de toda la arquitectura de aplicación según experiencia de expertos de servicios de pruebas de penetración.

Permitiendo a los usuarios a crear contraseñas débiles

Cada vez los hackers hackean una aplicación web y exponen las contraseñas de usuario, una cosa inmediatamente claro que los usuarios tienen horribles hábitos respecto a la seguridad. La contraseña más popular en la mayoría de instancias es 12345. Como encargado del desarrollo de aplicaciones web, no se puede permitir que los usuarios crean contraseñas débiles.

El almacenamiento de contraseñas en texto plano

 

El error más común los desarrolladores de aplicaciones web es no almacenar las credenciales de autenticación de forma cifrada en bases de datos. Las credenciales de autenticación deben ser almacenadas de forma cifrada según consejos de expertos de pruebas de penetración.

Problemas principales en la programación de sistemas web

Gran parte de los problemas de seguridad en las aplicaciones web son causados por la falta de seguimiento en dos rubros muy importantes de los que depende cualquier aplicación, las entradas y salidas del sistema. Ver Ilustración 1.

Además de verificar estos 2 rubros, es importante considerar la exposición accidental de datos que pueden ser empleados en un posible ataque sobre el sistema. Los mensajes de error enviados por el servidor, que suelen ser de gran utilidad durante el proceso de desarrollo de aplicaciones, pueden ser empleados maliciosamente cuando siguen apareciendo en un entorno de producción, por lo que es necesario deshabilitar todos estos mensajes y editar algunos otros (como los que se envían cuando el servidor no encuentra algún archivo en particular) los cuales también pueden ser utilizados por los atacantes para obtener información sobre nuestro sistema.

Balancear riesgo y usabilidad

Si bien la usabilidad y la seguridad en una aplicación web no son excluyentes una de la otra, alguna medida tomada para incrementar la seguridad con frecuencia afecta la usabilidad. Normalmente siempre se debe pensar en las maneras en que usuarios ilegítimos nos pueden atacar y la facilidad de uso para los usuarios legítimos.

Es conveniente emplear medidas de seguridad que sean transparentes a los usuarios y que no resulten engorrosas en su empleo. Por ejemplo, el uso de un login que solicita el nombre de usuario y contraseña (Ilustración 2.), permite controlar el acceso de los usuarios hacia secciones restringidas de la aplicación. Este paso adicional, es una característica que impacta en la rapidez de acceso a la información por parte del usuario, pero que proporciona un elemento adicional de protección.

A mayor complejidad de nuestro sitio, aumenta el riesgo de que se sufra un ataque debido a sus características más elaboradas, es por eso que deben considerarse opciones de seguridad necesarias y sencillas pero eficientes, que ayuden a mitigar cualquier característica que la haga vulnerable.

Rastrear el paso de los datos

Es muy importante mantener conocimiento de los pasos que ha recorrido la información en todo momento. Conocer de dónde vienen los datos y hacia dónde van. En muchas ocasiones lograr esto puede ser complicado, especialmente sin un conocimiento profundo de cómo funcionan las aplicaciones web.

En el desarrollo de aplicaciones web, existen maneras de distinguir los orígenes de los datos y poder así reconocer cuando los datos pueden ser dignos de confianza y cuando no.

Normalmente existen arreglos globales en la aplicación (por ejemplo en PHP los arreglos $_GET,  $_POST, $_COOKIE y $_SESSION entre otros) que sirven para identificar de forma clara las entradas proporcionadas por el usuario. Si esto lo combinamos con una convención estricta para el nombrado de las variables podemos tener un control sobre el origen de los datos usados en el código.

Además de entender los orígenes de la información se debe dar la misma importancia a entender cuáles son las salidas que tiene la aplicación y hacia a donde se devuelven los resultados.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies