En este artículo voy a hablar sobre un lenguaje de programación que puede ser muy útil a la hora de proteger nuestras aplicaciones. Se trata de Wyvern.
¿Que es Wyvern?
El nombre proviene de la criatura legendaria con cabeza de dragón, alas, cuerpo de reptil, dos patas y una cola. El lenguaje de programación Wyvern se trata de un lenguaje aún en desarrollo que está siendo diseñado por Jonathan Aldrich en el ISR (Institute for Software Research). Este lenguaje de programación se basa en el método de utilizar varios lenguajes en el mismo programa. Este concepto permite proteger las aplicaciones contra ataques de inyección de código. Se trata de un lenguaje para construir páginas web o aplicaciones móviles. Se desarrollaría con un solo lenguaje, pero por debajo se utilizarían “sublenguajes” para realizar las distintas tareas (como SQL para la base de datos, HTML para maquetar la páginas, etc).
Aumentar la seguridad
Uno de los principales problemas de seguridad es la inyección de código. Se trata de, utilizando los formularios de una aplicación, introducir comandos de código con el objetivo de dañar el sistema. Por ejemplo podría introducir en un formulario de una página web en vez de mi nombre el comando SQL “DROP TABLE USUARIOS”. Si la página no está bien diseñada, y existiera una tabla en la base de datos llamada usuarios, se borraría y se perderían muchos datos de los usuarios. Un lenguaje como Wyvern nos facilitaría la tarea de protegernos ante este problema. Wyvern entiende e identifica los diferentes lenguaje por contexto, tratando los datos y los objetos como literales. De tal forma, en vez de enviar la petición a la base de datos a través de un método PHP por ejemplo, utilizaría SQL directamente. A continuación muestro un ejemplo de código escrito con Wyvern.
type Lot = meth value : int meth compare(other : Lot) : int meth sell : int meth purchase(q : int, p : int) : Lot = new var qty : int = q var price : int = p meth value : int = this.qty * this.price meth compare(other : Lot) : int = this.value - other.value meth sell : int = val qtySold = this.qty this.qty = 0 qtySold val aLot = purchase(100,100) val d = aLot.compare(purchase(50,90)) val value = aLot.value val qtySold = aLot.sell
Conclusiones
Aunque Wyvern todavía no está terminado, podemos decir que podría ser un gran paso a la hora de solucionar uno de los grandes problemas de seguridad que existen. No es que ahora no se pueda solucionar, pero Wyvern facilitaría mucho la tarea. Podríamos estar ante un nuevo concepto y una nueva forma de programar.
El artículo Wyvern. Muchos Lenguajes de Programación en Uno Solo apareció por primera vez en Instinto Binario.