Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Atacando Aplicaciones, APIs, Apps Móviles, Servidores Redes, Dispositivos IoT
SCI: Sistemas de Control Industrial
COS: Centro de Operaciones de Seguridad

Establecer Opciones Seguras en Condicionales

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en Objective C al definir escenarios seguros por defecto en las estructuras condicionales. Las buenas prácticas de programación permiten desarrollar aplicaciones seguras y confiables.

Necesidad

Establecer opciones seguras por defecto en estructuras condicionales en Objetive-C.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación en Objective-C para iOS 8.

  2. La aplicación utiliza estructuras condicionales como if o switch.

  3. No se ha definido escenarios por defecto ante condiciones no contempladas por la aplicación.

Solución

Las buenas prácticas de programación consisten en una serie de criterios que permiten evitar fallos y vulnerabilidades de seguridad en el momento de desarrollar una aplicación. Una de las prácticas más comunes, es usar opciones por defecto seguras cuando se utilizan estructuras condicionales. Esto se realiza para evitar que la aplicación falle en el momento de presentarse una condición que no ha sido definida dentro de las opciones válidas. Las buenas prácticas se pueden aplicar a cualquier lenguaje de programación+.

En cada estructura condicional empleada en una aplicación iOS, se recomienda contemplar todos los posibles escenarios. Para ello debemos seguir los siguientes criterios:

  • Para sentencias if debe usarse con su correspondiente else [1].

  • Para sentencias switch debe usarse su correspondiente caso default [2].

En este artículo mostraremos a través de un ejemplo cómo definir opciones seguras por defecto en Objective C. Para ello seguiremos el siguiente procedimiento:

  1. Antes de iniciar debemos validar que el usuario haya ingresado al menos un argumento válido para ejecutar la aplicación.

  2. Una vez verificado que el número de argumentos sea correcto, procedemos a importar el framework Foundation.h el cual define unas interfaces de C para usar objetos y tipos de datos nativos:

    switch.m
    1
    import <Foundation/Foundation.h>
    
  3. Creamos el método principal y una variable local como ejemplo:

    1
    2
    int main(){
      NSInteger nota = 4;
    
  4. Definimos las opciones. En este caso utilizaremos una sentencia switch - case que verifica y muestra un mensaje de acuerdo al valor de la variable nota. El código se muestra a continuación:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    switch(nota){
      case '5' :
        NSLog(@"Excelente!\n" );
        break;
    
      case '4' :
        NSLog(@"Bien hecho!\n" );
        break;
    
      case '3' :
        NSLog(@"Pasaste!\n" );
        break;
    
      case '2' :
        NSLog(@"Intentalo de nuevo!\n" );
        break;
    
      case '1' :
        NSLog(@"Perdiste!\n" );
        break;s
    
  5. Creamos la opción segura por defecto para el switch, default. Con esto es posible evitar comportamientos inesperados:

    1
    2
    3
    4
    5
      default :
        NSLog(@"Nota Invalida\n" );
      }
    return 0;
    }
    

De esta manera aseguramos que la aplicación se comporte bien al no ingresar opciones fuera de las definidas en cada caso.

Descargas

  1. switch.m Contiene el ejemplo anterior, mostrando el uso correcto de la estructura condicional switch - case en Objective C.



Haz un comentario

Estado de los servicios - Términos de Uso