Como programador o desarrollador, no se puede subestimar la importancia de crear aplicaciones seguras.
La seguridad del software se ocupa de la gestión de ataques maliciosos identificando posibles vulnerabilidades en el software y tomando las precauciones necesarias para protegerse contra ellas.
El software nunca puede ser 100% seguro porque un desarrollador puede pasar por alto un error, crear nuevos errores en un intento de corregir los casos existentes o crear nuevas vulnerabilidades a través de actualizaciones.
Sin embargo, existen dos prácticas clave que todos los desarrolladores de software pueden emplear para asegurarse de que crean software seguro escribiendo código seguro en primer lugar y probando su código de manera eficiente.
Cómo escribir código seguro
Escribir código seguro se reduce a un pequeño manejo de errores. Si puede anticipar cada valor potencial que un usuario podría aportar a su aplicación y crear una respuesta en su programa para ese valor, entonces está escribiendo un código seguro.
Esto es mucho más simple de lo que podría pensar porque todos los buenos desarrolladores saben casi todo sobre las aplicaciones que desarrollan. Por lo tanto, debe conocer todos los valores que su aplicación requiere para llevar a cabo una tarea (los valores aprobados) y comprender que cualquier otro valor posible que exista es un valor no aprobado.
Escribir código seguro
Supongamos que desea crear un programa que solo acepte dos valores enteros de un usuario y realice una operación de suma en ellos. Con esa única frase, como buen desarrollador, ahora sabes todo sobre tu aplicación. Conoce todos los valores que aceptará este programa (valores enteros) y conoce la tarea que completará este programa (una operación de suma).
Ejemplo de creación del programa en Java
importar java.util. Escáner;
public class Main {
// La función principal que ejecuta el programa y recopila los dos valores
public static void main (String [] args) {
System.out.println ("Introduzca sus dos valores enteros:");
int value1;
int value2;
Entrada del escáner = nuevo escáner (System.in);
valor1 = input.nextInt ();
valor2 = input.nextInt ();
suma (valor1, valor2);
input.close ();
}
// la función que recopila los dos valores y muestra su suma
adición vacía estática privada (int value1, int value2) {
int suma;
suma = valor1 + valor2;
System.out.println ("La suma de los dos valores enteros que ingresó:" + suma);
}
}
El código anterior produce una aplicación que coincide con los requisitos de forma precisa. Al ejecutarse, producirá la siguiente línea en la consola:
Ingrese sus dos valores enteros:
La aplicación permanecerá en pausa hasta que el usuario ingrese dos valores enteros en la consola (eso significa escribir el primer valor, presionar la tecla Intro y repetir).
Si el usuario ingresa los valores 5 y 4 en la consola, el programa producirá la siguiente salida:
La suma de los dos valores enteros que ingresó: 9
Esto es genial; el programa hace exactamente lo que debería hacer. Sin embargo, si aparece un usuario malicioso e ingresa un valor que no sea un número entero, como "g", en su aplicación, habrá problemas. Esto se debe a que ningún código de la aplicación protege contra valores no aprobados.
En este punto, su aplicación se bloqueará, creando una puerta de enlace potencial a su aplicación para el hacker que sabe exactamente qué hacer a continuación.
Asegurar su ejemplo de programa
importar java.util. InputMismatchException;
importar java.util. Escáner;
public class Main {
// La función principal que ejecuta el programa y recopila los dos valores
public static void main (String [] args) {
intentar {
System.out.println ("Introduzca sus dos valores enteros:");
int value1;
int value2;
// usando la clase de escáner para leer cada entrada del usuario,
// y asignarlo a su respectiva variable (lanza una excepción si los valores no son enteros)
Entrada del escáner = nuevo escáner (System.in);
valor1 = input.nextInt ();
valor2 = input.nextInt ();
// llama a la función de suma y le pasa los dos valores
suma (valor1, valor2);
// cierra el flujo de entrada después de que ha llegado al final de su uso
input.close ();
// manejar todos los errores arrojados en el bloque try
} captura (InputMismatchException e) {
System.out.println ("Introduzca un valor entero válido");
} captura (Excepción e) {
System.out.println (e.getMessage ());
}
}
// la función que recopila los dos valores y muestra su suma
adición vacía estática privada (int value1, int value2) {
int suma;
suma = valor1 + valor2;
System.out.println ("La suma de los dos valores enteros que ingresó:" + suma);
}
}
El código anterior es seguro porque realiza el manejo de excepciones. Por lo tanto, si ingresa un valor no entero, el programa terminará correctamente mientras produce la siguiente línea de código:
Ingrese un valor entero válido.
¿Qué es el manejo de excepciones?
Básicamente, el manejo de excepciones es la versión moderna del manejo de errores, donde separa el código de manejo de errores del código de procesamiento normal. En el ejemplo anterior, todo el código de procesamiento normal (o código que potencialmente puede generar una excepción) está dentro de un intentar bloque, y todo el código de manejo de errores está dentro captura bloques.
Si observa más de cerca el ejemplo anterior, encontrará que hay dos bloques de captura. El primero toma un InputMismatchException argumento; este es el nombre de la excepción que se lanza si se ingresa un valor no entero. El segundo toma un Excepción argumento, y esto es importante porque su propósito es detectar cualquier excepción dentro del código que el desarrollador no encontró durante la prueba.
Relacionados: Excepciones de Java: ¿las está manejando correctamente?
Probando su código
Nunca debe subestimar el poder de probar y volver a probar su código antes de empaquetarlo. Muchos desarrolladores (y usuarios de sus aplicaciones) encuentran nuevos errores después de que el software está disponible para el público.
Probar minuciosamente su código le asegurará que sabe lo que hará su aplicación en cada escenario concebible, y eso le permitirá proteger su aplicación de violaciones de datos.
Relacionados: Cómo conseguir su primer trabajo de prueba de software
Considere el ejemplo anterior. ¿Qué pasa si, después de la finalización, solo prueba la aplicación con valores enteros? Puede alejarse de la aplicación pensando que ha identificado correctamente todos los errores potenciales cuando ese no es el caso.
El hecho es que es posible que no pueda identificar todos los errores potenciales; esta es la razón por la que el manejo de errores funciona de la mano con la prueba de su código. La prueba del programa anterior muestra que se producirá un error potencial en un escenario específico.
Sin embargo, si existe algún otro error que no apareció durante la prueba, el segundo bloque de captura en el código anterior lo manejará.
Asegurar su base de datos
Si su aplicación se conecta a una base de datos, la mejor manera de evitar el acceso a esa base de datos es asegurarse de que todos los aspectos de su aplicación sean seguros. Sin embargo, ¿qué pasa si su aplicación está diseñada con el único propósito de proporcionar una interfaz a dicha base de datos?
Aquí es donde las cosas se ponen un poco más interesantes. En su forma más básica, una base de datos permite a un usuario agregar, recuperar, actualizar y eliminar datos. Un sistema de gestión de bases de datos es una aplicación que permite a un usuario interactuar directamente con una base de datos.
La mayoría de las bases de datos contienen datos sensibles, por lo tanto, para mantener la integridad y limitar el acceso a estos datos, existe un requisito: el control de acceso.
Control de acceso
El control de acceso busca mantener la integridad de una base de datos definiendo el tipo de personas que pueden acceder a una base de datos y restringiendo el tipo de acceso que tienen. Por lo tanto, un buen sistema de administración de bases de datos debería poder registrar quién accede a la base de datos, a qué hora y qué hicieron.
También debería poder evitar que un usuario registrado acceda o edite datos con los que no está autorizado a interactuar.
La seguridad del software es una habilidad crucial para todos los desarrolladores
Desarrollar un buen software es sinónimo de garantizar que su software pueda resistir cualquier ataque malintencionado. Esto solo se puede lograr mediante la escritura de código seguro, la prueba continua de una aplicación y el control de quién tiene acceso a sus datos.
Ahora que sabe cómo proteger su software, es posible que desee conocer algunos pasos de desarrollo de software.
¿Se está preparando para codificar su primer programa? Asegúrese de seguir estos pasos clave de desarrollo de software.
Leer siguiente
- Programación
- La seguridad cibernética
- Consejos de codificación
Kadeisha Kean es desarrolladora de software Full-Stack y redactora técnica / tecnológica. Tiene la habilidad distintiva de simplificar algunos de los conceptos tecnológicos más complejos; produciendo material que puede ser fácilmente entendido por cualquier novato en tecnología. Le apasiona escribir, desarrollar software interesante y viajar por el mundo (a través de documentales).
Suscríbete a nuestro boletín
¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!
Un paso más…!
Confirme su dirección de correo electrónico en el correo electrónico que le acabamos de enviar.