¿Qué debe saber todo ingeniero de software sobre la seguridad del software?

La cosa # 1 que un ingeniero de software debe saber sobre la seguridad del software, en mi opinión, es esto …

“Ese uso va en contra de las reglas” no es una defensa.

El uso descrito puede ser un conjunto particular de datos, o puede ser una forma particular de invocar una función, o invocar algo de dos hilos simultáneamente, etc.

En el pasado, informé problemas de seguridad con el software y pedí al desarrollador que volviera con el argumento de que no obedecía las reglas.

Adivinen qué, muchachos … Si alguien intenta piratear su servidor / dispositivo / biblioteca, etc., eso es lo que van a hacer. Van a romper las reglas. Si su documentación dice que una API no es segura para subprocesos, la llamarán desde dos subprocesos al mismo tiempo. Si un parámetro necesita ser un número entero positivo, pasará un número entero negativo y verá qué sucede. Si dos banderas son exclusivas, y solo se debe usar una a la vez, las establecerán ambas.

Si tiene la suerte de trabajar en un área donde todo el código y los datos con los que trata son totalmente confiables, disfrute de su libertad mientras pueda, pero tenga en cuenta que en algún momento en el futuro, algunos códigos o datos no confiables es probable que aparezca y desafíe sus suposiciones. Puede ser mañana o dentro de años, pero esté listo cuando suceda.

Ningún software es 100% seguro, siempre hay ciertas lagunas que dejamos.

Sé un poco sobre las pruebas de penetración, así que digamos que soy un hacker en este momento.

Ahora, si su aplicación tiene algún sistema de pago, entonces trataría de infectar su sistema usando un malware y plantar un keylogger. Este keylogger rastreará todas las teclas que escriba, por lo que para evitar esto, puede proporcionar un teclado en pantalla para ocultar las credenciales de su tarjeta de crédito.

Los virus siempre pueden infectar el sistema al pasar por alto el firewall y el antivirus, generalmente cómo funciona un malware que bloquea su software y recopila información, por lo que siempre debe realizar controles de seguridad en los servicios importantes de su software.

Hay muchas maneras de hackear cualquier software y si se paga, la piratería es la primera, y hay muchas, por lo que debe estudiar su software muy bien e intentar romperlo usted mismo. La ingeniería inversa es la mejor manera de encontrar lagunas en el sistema.

Lo principal que cualquier programador debe tener en cuenta es que, al codificar, y debe tener afinidad en las reglas y los términos del desarrollo de software. En caso de violación, el programador enfrentará un argumento del desarrollador y enfrentará consecuencias. Debe conocer todos los códigos y reglas de codificación donde sea que esté trabajando. Al igual que cuando alguien intenta piratear su sistema, es cuando están rompiendo las reglas. Deberías aprender todas las reglas mientras estudias informática. Pero en mi opinión, al menos una laguna todavía permanece en el software. La piratería es otra forma de violación de reglas y entrar en un software. Puede proteger sus datos verificándolos en el momento en que los reciba. La cosa no segura más común es un virus, puede infectar el sistema al traspasar el firewall y el bloqueo del malware en su software y recopilar toda la información. Pero eso tiene una solución de antivirus. Cuando desarrolle su software, intente romperlo usted mismo, así es como puede cubrir las lagunas que quedan mientras codifica. Pero creo que no hay software que sea 100% seguro contra malware, solo las precauciones de seguridad preferidas por las cuales puede estar seguro.

Escuela Holberton

More Interesting

¿Qué criterios de evaluación debo adoptar para tener en cuenta mi progreso como programador / ingeniero de software? ¿Qué estoy haciendo mal o bien o qué debo cambiar como programador?

¿Cómo se comparan las API relajantes creadas con Django Rest Framework con las construidas en NodeJS?

¿Cómo explicaría cómo alimentar un número a una persona que solo puede sumar?

¿Debo cambiarme de una empresa multinacional a una startup de Big Data (totalmente rentable) en el mercado indio actual de TI si obtengo el mismo salario?

Cómo hacer que mi equipo compre en las guías de estilo de proyecto / programación

¿Pueden los ingenieros de software ser astronautas?

¿Cuál es la condición de un ingeniero de software no IITiano?

¿Quién tiene mejores oportunidades profesionales: ingenieros de redes o desarrolladores de Java?

¿Qué tan difícil es hacer una aplicación como Quora?

¿Cómo puede un ingeniero de software priorizar mejor el bajo estrés y el equilibrio trabajo / familia al seleccionar trabajos?

¿Debería primero renunciar y buscar un trabajo o conseguir un trabajo y luego renunciar?

¿Cuáles son las aplicaciones de la ingeniería de software en nuestro entorno diario?

¿Cuál es un buen recurso para el 'panorama general' del desarrollo de software?

¿Cuál es el área de programación más accesible / empleable para una persona ciega? ¿Puedo hacer un desarrollo web / móvil del lado del servidor con Node o un idioma similar?

¿Necesito especializarme como ingeniero de software?