Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + tecnología especializada

Establecer Opciones Seguras por Defecto

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en PHP al establecer opciones seguras por defecto en estructuras condicionales. Para mejorar la seguridad de la aplicación es necesario considerar todos los posibles escenarios.

Necesidad

Usar estructuras condicionales contemplando todos los escenarios posibles.

Contexto

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

  1. Se dispone de una aplicación PHP conforme con la especificación del lenguaje PHP 4 o superior.

  2. La aplicación utiliza estructuras condicionales, tales como if - then o switch - case.

  3. No se han definido casos por defecto para los condicionales.

Solución

Cuando se desarrollan aplicaciones, es muy importante pensar en la seguridad general de las mismas. Existen muchos criterios de programación segura que se pueden aplicar para evitar ataques malintencionados. La validación de entradas es uno de ellos, y constituye un proceso esencial para crear aplicaciones seguras. Gracias a ella que es posible proteger el sistema contra ataques comunes de inyección de código y similares.

Las estructuras condicionales por lo general se utilizan para definir la respuesta del sistema ante una entrada del usuario. En otras palabras, permite la toma de decisiones. La definición de opciones por defecto en condicionales hace parte de la validación de entradas. Esto es debido a que permite abarcar todos los casos, terminando la aplicación en un escenario seguro y controlado ante una entrada inválida.

Esta validación es aplicable a cualquier lenguaje de programación. Para el caso de PHP podemos mejorar la seguridad de nuestra aplicación, al agregar escenarios por defecto para cada uno de los casos posibles. Para ello utilizamos los condicionales propios del lenguaje. Esto lo realizamos definiendo siguientes criterios [1]:

  • Cada sentencia if debe tener su respectiva sentencia else.

  • Cada estructura condicional switch - case debe poseer su respectivo caso por defecto default.

    1. A continuación presentamos un ejemplo del uso adecuado de la sentencia if - then - else en PHP:

      ifexample.php
      1
      2
      3
      4
      5
      6
      7
      if (condition){
        body-code
      }
      
      else {
        else-code
      }
      

      Dentro del bloque de la sentencia else, colocaremos el procedimiento a realizar en caso de no cumplirse la condición. Es decir, definimos una opción por defecto segura y controlada para terminar el condicional.

Para el caso de la sentencia switch, realizamos un procedimiento similar. Para ello seguimos los siguientes pasos:

  1. Se definen los escenarios contemplados por la aplicación.

    swtichexample.php
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    switch (expression) {
    
    case condition_1:
          code_block_1;
          break;
    
    case condition_2:
         code_block_2;
         break;
    
    ...
    
    case condition_n:
         code_block_n;
         break;
    

    Nótese el uso de la sentencia break. Esta es utilizada para finalizar las instrucciones ejecutadas en un determinado caso.

  2. En este caso el escenario por defecto es descrito por el caso default. Aquí es donde debemos colocar el código que se ejecutará en caso de que ninguna de las condiciones contempladas por la aplicación se cumpla.

    1
    2
    3
    default:
         code_block_default;
    }
    



Haz un comentario

Estado de los servicios - Términos de Uso