Lenguajes de programación para un desarrollo más seguro

Lenguajes de programación para un desarrollo más seguro
May 12, 2025

Al iniciar un nuevo proyecto de desarrollo, existen muchas opciones. Estas decisiones suelen tener un gran impacto, tanto en los aspectos funcionales, como no funcionales del proyecto. En este artículo, analizaremos el impacto que la elección del lenguaje de programación tendrá en la seguridad de tu proyecto y plantearemos la idea de que la elección del entorno de programación puede mejorar considerablemente la seguridad de tu sistema. Por supuesto, dependiendo del tipo de proyecto, existen diversas limitaciones que también analizaremos.

La elección del lenguaje de programación puede parecer un tema extraño, pero lo cierto es que un equipo de desarrollo competente puede obtener una ventaja considerable al utilizar las herramientas adecuadas para el desarrollo. El lenguaje de programación utilizado podría ser la más importante.

Quizás la consideración más importante al elegir un lenguaje, desde la perspectiva de la seguridad, es si éste requiere o no gestión manual de memoria. Esto se debe a que la gestión manual de memoria se asocia con un tipo de vulnerabilidades catastróficas que siguen estando entre las más graves de todo el software desplegado. Por ello, recomendamos no utilizar lenguajes de programación como C, C++, Assembly y Objective-C, a menos que no tengas otra opción. En la mayoría de los casos, es posible utilizar otros lenguajes con mejores propiedades. Para programación de bajo nivel, tanto Go como Rust han demostrado ser muy eficaces. Si desarrollas software para Mac o iPhone, puedes elegir Swift, en lugar de Objective-C.

En algunos casos, simplemente no es posible evitar lenguajes de bajo nivel con características peligrosas. En estos casos, existen patrones que pueden utilizarse para minimizar el riesgo de ciertas vulnerabilidades. Cada lenguaje tiene su propia guía, pero un ejemplo típico es cómo en C++ se pueden usar punteros inteligentes para implementar el patrón RAII, lo que reduce el riesgo de fugas de memoria. Otra sugerencia es escribir lo mínimo posible en el lenguaje de bajo nivel y usar esa parte de un lenguaje de más alto nivel.

Al desarrollar software para Android, es posible usar C y C++, pero no es lo más recomendable. El lenguaje predeterminado para Android es Java, pero muchas empresas están migrando a Kotlin, en su lugar. Esto se debe a que el código se vuelve de alto nivel, lo que facilita su comprensión y razonamiento. Y si el código es más fácil de entender, también es más fácil garantizar que funcione correctamente.

Una gran cantidad de código para sistemas web y API de diferentes tipos se escribe cada día. Esta es una situación en la que las empresas tienen vía libre; casi cualquier lenguaje de programación puede usarse para este propósito. Sin embargo, las decisiones que se tomen aún tienen implicaciones para la seguridad. Quizás los lenguajes más comunes para este tipo de propósitos sean PHP y JavaScript. La razón es que es muy sencillo comenzar con estos lenguajes. Muchas empresas ya cuentan con desarrolladores que conocen JavaScript, ya que es necesario para la mayoría de los sitios web, y terminan usándolo también para escribir el código backend.

PHP y JavaScript comparten otra característica: Los objetos pueden ser fácilmente convertidos a diferentes tipos, a veces sin que el desarrollador lo sepa. Esto implica que pueden producirse comportamientos muy inesperados. PHP también cuenta con una serie de características que facilitan la creación rápida de un sitio web dinámico, pero dificultan mucho la escritura de código limpio y fácil de mantener. Otro problema con JavaScript es la gran cantidad de código malicioso que existe en los repositorios de administración de paquetes. Es muy fácil instalar un paquete que tenga una puerta trasera. Por eso, recomendamos evitar el uso de PHP y JavaScript en la medida de lo posible.

En CAD, tenemos preferencia por el uso de Go. Es un lenguaje de bajo nivel que conserva características de alto nivel. Esto facilita la escritura de código simple y limpio que claramente cumple su función. El ecosistema de paquetes de Go está muy desarrollado y la calidad, tanto de los paquetes integrados como de terceros, es muy alta. También tienes acceso a buenas implementaciones criptográficas.

Si trabajas con sistemas de bajo nivel, Rust es insuperable. Sí, lleva un tiempo acostumbrarse, pero una vez que entiendes cómo usar sus características únicas, se convierte en un entorno extremadamente potente que facilita la implementación de código seguro.

¿Y qué hay de los demás lenguajes? ¿Java? ¿Python? ¿Ruby? Sin duda, tenemos nuestros favoritos. Los tres ofrecen suficientes funciones para escribir código seguro. Todos cuentan con bibliotecas decentes. Así que, si tu empresa utiliza uno de estos lenguajes, no hay problema. Simplemente implementa algunas prácticas de codificación segura y piensa en la arquitectura de tu sistema. De ese modo, ciertamente debería ser posible escribir código seguro.