Seguridad, ¿qué es eso?

El curso que está a punto de empezar será mi tercer año en la carrera de Ingeniería Informática y hasta ahora en ninguna asignatura se ha hecho un especial hincapié en buenas prácticas de programación. En la mayoría de los casos con que se diseñe e implemente una aplicación que cumpla unos mínimos, sirve.

Con esa formación no es de extrañar que se puedan encontrar tantas aplicaciones con serios fallos de programación fácilmente evitables. Generalmente pensamos que si un ingeniero informático mete la pata, no pasa nada… ¿qué más da que Word de un error de vez en cuando? Cierto, no es importante, de no ser porque los ingenieros informáticos también crean los sistemas informáticos de las líneas aéreas, comunicaciones por satélite, instrumental médico, bancos, etc…

Esta es una tienda virtual de mi tierra, en la que no han cuidado bien los casos “excepcionales”. Aparentemente funciona bien, hasta que se te ocurre poner un número negativo en el campo “cantidad”, momento en el que la aplicación, en vez de rechazarlo, lo acepta y opera con él:

En esta otra tienda han sido un poco más cuidadosos. Al añadir un producto al carrito todo funciona como debería. ¿Dónde está el fallo? Bueno, al quitar productos del carrito se puede modificar fácilmente el precio del artículo inspeccionando los datos que se envían al servidor. Es decir, podemos pedir un articulo de 60 euros, quitarlo diciendo que vale -120 euros (60 -120 = -60) y volver a pedirlo (-60 + 60 = 0) pagando por él la asombrosa cantidad de 0 euros.

Ahora podríamos pensar que esas personas eran unas chapuzas y que nuestro código es magnífico y superseguro… o podemos aplicarnos el cuento y concienciarnos en que debemos realizar pruebas de nuestras aplicaciones antes de ponerlas en producción, además de hacer que la seguridad esté presente en todas las fases del desarrollo.

Los nombres de las tiendas, así como sus direcciones han sido ocultadas y en ningún momento se ha llegado a formalizar la compra.

Por Carballude

Me llamo Pablo Carballude González, soy graduado en computación con master en HCI y Seguridad Informática. Actualmente trabajo para Amazon en Seattle como Software Developer Engineer. Soy de esas personas que no saben si los textos autobiográficos deben ser en primera o tercera persona. Lo intenté en segunda, pero no le entendí nada :P

3 comentarios

  1. All Input Is Evil! Until proven otherwise

    No puedes confiar jamás en lo que el usuario introduce, y parece ser un error muy común, sobretodo en tiendas virtuales con el tema del precio.

    Un saludo.

  2. Si, tienes razon en una cosa: se deberian aprender patrones de programacion en la facultad que eviten errores de programacion comunes.

    De todas formas, despues de mi experiencia en la region y en diversos puntos del pais y del mundo, te puedo decir que el problema se llama «falta de tiempo». Te aseguro que hay proyectos que necesitan un mes mas por lo menos y lo tienes que acabar en 1 semana.

  3. Desde luego la educación no es el único problema. El que comentas es otro de los problemas más comunes… y ese es difícil de evitar, porque si pides más tiempo contratarán a otro que lo haga peor, pero en menos.

    Al final se reduce a un problema de percepción social y a una falta de regulación legal… creo yo.

Dejar un comentario

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