Creando apps seguras

Hola tyros!
Crear aplicaciones seguras es un reto que debe convertirse en hábito. Lo que vimos hace unas pocas semanas con el "caso facebook", en donde se vió comprometida la información de millones de personas es solo la punta del iceberg.
Justo en este momento me estoy haciendo la pregunta de cuánta de la información que tengo en esta laptop (con la que escribo) se encuentra comprometida. Pues tengo desde fotos de mi familia, hasta código fuente de mis desarrollos.
Justo hace días me llegó una notificación a otra de mis computadoras, indicándome que era necesario actualizar el firmware del módulo TPM. Para los que no saben que es, en resúmen, TPM es un chip que porporciona un nivel de seguridad basado en hardware-software; de tal manera que pueda servir de protección adicional para nuestros dispositivos. Resulta que el firmware de mi Módulo TPM era del 2015, y apenas este año salió una actualización. Luego de varios intentos y, bloquearlo varias veces, logré instalar el firmware actualizado.

Esta situación me llevó a una interrogante. Y es que para poder actualizarlo, las instrucciones implicaban bajar el nivel de seguridad, limpiarlo, volver a ponerle el nivel de seguridad anterior, volver a limpiarlo, entre varias reiniciadas del sistema operativo. Ahora, mi interrogante es: ¿Que tan segura estuvo mi computadora durante ese periodo de tiempo en el que tuve que "hackearme" a mi mismo?

He leído que en tiempos de guerra se vale de todo. Un ejército enemigo es capaz de envenenar el agua de un rio que pasa por la ciudad que desean atacar. Mientras que los residentes son capaces de hacer lo mismo a las cisternas, justo cuando se dan cuenta que la victoria del enemigo es inminente.

Yo, como programador, ¿Que garantías le doy a mis clientes?. Siempre es buena idea tomar precauciones. No digas que nunca te va a pasar. Un día puedes recibir esa llamada de auxilio de tus clientes avisándote que al ingresar a la aplicación ya no tiene su información, que ayer era rico y hoy tiene que declararse en banca rota. Todo por que no tubiste suficientes y paranóicas precauciones de seguridad.

Antes de comenzar, debo decirles que estos tips son para principiantes. Realmente no espero que mis lectores sean expertos desarrolladores. Así que, si eres miembro de Anonymous, un hacker experto o agente del nuevo orden mundial, quizá quieras regresarte a la dark web, ya que aqui todos somos tyros.

Tips para crear apps seguras:

1. No copies código. Todos hemos copiado unas cuantas líneas de aquí, otras de allá. El problema, cuando se trata de información clasificada, es que alguien mas lo copió también. Siempre que se trate de información protegida por alguna de esas miles de leyes, crea tu propia versión de ese código que copiaste. Si te quisiste evitar la fatiga, al menos estudialo para que veas si entre esas líneas, el "generoso" que lo publicó en internet no puso un agujerito que pueda meterte en problemas mas adelante.

2. Encripta. No necesitas ser un genio de la programación, hay muchos algoritmos que puedes utilizar, pregúntale a Google. Hazle difícil el trabajo a los hackers. Si es inevitable que pasen tus barreras de seguridad, al menos asegúrate de que cuando logren entrar a tu información, sea como para un mexicano en china.

Conoce tu lenguaje. Todos los lenguajes que conozco tienen varias formas para hacer lo mismo. Antes de buscar en internet "como hacer esto en C#/Java/Cobol/NodeJs/etc", investiga si nativamente el lenguaje es capaz de hacer lo que necesitas hacer. Varias veces he buscado rutinas en internet para hacer algo que el mismo lenguaje era capaz de hacer con menos líneas.

3. Depura tu código. Conforme vayas creciendo como programador, te vas a dar cuenta que lo que hacías con 100 líneas, es posible con 30 o 40. no dejes ese código viejo, mejóralo. Quizá aumentes el rendimiento de tu aplicación y elimines alguno que otro agujero de seguridad.

4. Pon trampas. Si sabes que sabes que tu aplicación será atacada, debes engañar a los atacantes. No se me ocurre un ejemplo práctico, sin embargo, si sabes el tipo de información que vas a manejar, seguro sabes como distraerlos. Haz que busquen donde no hay. Haz que piensen ya tienen lo que buscaban cuando tengan basura.

5. Lleva un registro. Habilita registros por todos lados. Si te es posible, envíalos a otro lugar que tenga un sistema de seguridad distinto. Por ejemplo, si tu app es Android, envia registros a un servidor Windows o Linux; de igual manera, si es posible habilitar los registros del dispositivo.

6. Combina lenguajes. Igual no tienes que ser experto. Pero si te es posible, hazlo.

7. Hackeate a ti mismo. Cuando estaba tratando de actualizar el módulo TPM de mi laptop, se me bloqueó varias veces, como medida de seguridad. ¿Cuantos intentos fallidos vas a permitir en tu aplicación?

8. Pide a otros que te hackeen. Antes de que tu aplicación tenga información real, vale la pena pedirle a otros programadores que le hagan unas cuantas pruebas. Sospecha si no encuentran ninguna vulnerabilidad. Revisa si sus intentos fueron a los registros.

9. No publiques código crítico en internet. A mi me gusta publicar código en internet. Temo haber subido algo que comprometa a alguna de mis aplicaciones. Espero no haberlo hecho nunca.

10. Encuentra el equilibrio. Que tu aplicación segura no sea una carga para la experiencia del usuario. Sin vas a construir un tanque de guerra, asegúrate que haya cabida para el piloto. Si tu aplicación no se puede usar, entonces no sirve.

Hasta la próxima!

No hay comentarios:

Publicar un comentario