Importancia del código en nuestros aplicativos
junio 9, 2022

Al momento de solicitar el desarrollo de un aplicativo, en la mayoría de los casos se da mayor importancia a las siguientes premisas:

  • Buen funcionamiento
  • Visualmente agradable
  • Amigable con el usuario
  • Programación rápida

Las siguientes son premisas muy importantes y sin querer estamos dejando fuera preguntas cómo:

  • ¿Se sigue un estándar o mejor practica de programación?
  • ¿El código tiene una estructura fácil de entender?
  • ¿Todo está documentado?
  • ¿Sera fácil darle mantenimiento?
  • ¿El código es eficiente?
  • ¿El código es seguro?

Ahora agreguemos factores como el tiempo de entrega y adecuaciones o cambios de último momento, complicaciones en general de proyecto en donde se termina por decidir con un “ya no importa lo demás sácalo y lo arreglamos en la marcha”.

Y así podemos crear una lista muy larga de situaciones con las que nos habremos encontrado y muchas veces el hacer validaciones nos implica dedicar recursos que tardan mucho en identificar lo que se debe corregir en el código.

¿Qué es el análisis de código?

El análisis de código es una metodología más que establece, con base en una serie de reglas de estilo, si el código generado está bien formado y estructurado. Para ello hay herramientas de análisis que evalúan nuestro código y con base en las reglas de estilo que tenga aplicadas, nos reportará una serie de errores a corregir. Todos esos errores dependerán del lenguaje que estemos utilizando, algunos serán estándar a todos ellos como pueden ser:

  • Nombrado de variables, clases y/o métodos
  • Complejidad ciclomática de cada clase o método (complejidad en la lógica interna, es decir, que el método en cuestión tenga bucles anidados, condiciones complejas, etc.)
  • Documentación de cada clase, variable, etc

Lo que debemos entender ahora es la importancia de tener un código que esté validado por los estándares, las razones para ello o algunas de ellas serían las siguientes:

  • Código bien estructurado, documentado y fácil de mantener
  • Al trabajar con esta metodología, hacemos que la curva de aprendizaje de un nuevo componente del equipo sea menor
  • Más rapidez a la hora de resolver incidencias
  • El desarrollador adquirirá mejores prácticas a la hora de programar, lo que tendremos después, serán desarrolladores más profesionales en su trabajo
  • Refactorización del código mucho más simple

Métodos para el análisis de código

Los análisis se pueden realizar mediante dos métodos:

  • Análisis estático: El código se analiza sin necesidad de ejecutar, permite ver errores de forma temprana y evita posibles revisiones posteriores, permitiéndonos ahorrar un tiempo valioso. Sin embargo, puede dar falsos positivos (Deben ser usadas durante el desarrollo)
  • Análisis dinámico: El código se analiza en ejecución, por lo que es más lento y requiere Testing, que lo veremos a continuación, pero a cambio, permite ver otro tipo de errores imposibles para el método estático, como los generados en el polimorfismo (muy usado en pruebas de pentest)

Bases al momento de desarrollar Código

Todo desarrollo debería tener por sentado estas bases que pueden variar de un desarrollador a otro y a su nivel de experiencia.

El tomar en cuenta estas características, ayuda a tener códigos sanos, recuerde que el impacto de un ataque va a depender mucho de la falla del Código.

Si bien es cierto que no podremos remediar el 100%, si debemos minimizar ese riesgo al ver que por lo menos lo que ya se conoce como corregirlo este aplicado.

¿Qué herramienta debo usar?

Un proceso de revisión de códigos asistido por herramientas implica el uso de una herramienta especializada para facilitar el proceso de revisión de códigos. Una herramienta generalmente te ayuda con las siguientes tareas:

  • Organizar y mostrar los archivos actualizados en un cambio.
  • Facilitar una conversación entre revisores y desarrolladores.
  • Evaluar la eficacia del proceso de revisión del código con métricas.

Aunque estos son los requisitos generales de un mecanismo de análisis de códigos, los métodos modernos pueden proporcionar un puñado de otras funciones.

Ahora hay muchas herramientas en el mercado y con grandes características, pero ¿cuál debo elegir? Aquí lo importante es que tome las siguientes consideraciones de acuerdo a la OWASP:

  • Tipos de análisis (AFD, semántico, estructural)
  • Categorías de vulnerabilidades que pueden detectarse, y esquema de nombres que siguen (e.g. CWE)
  • Precisión (falsos positivos y negativos)
  • Capacidad de configuración, por ejemplo, mediante reglas, filtros, marcas sobre items del código, etc.
  • Calidad de las recomendaciones correctivas
  • Posibilidad de trabajar en modo ‘híbrido’ (análisis estático + confirmación en modo ‘caja negra’)
  • Capacidades de integración (IDE, detectores dinámicos…)
  • Posibilidades de detección de defectos de diseño
  • Explicación de los resultados de forma clara y coherente
  • Soluciones con alto nivel de confianza
  • Soporte NIST SAMATE (Software Assurance Metrics and Tool Evaluation)

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada.