Joven hacker sonriendo

Enmascarar Texto

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en COBOL al enmascarar el texto ingresado por el usuario. La información sensible, por ejemplo usuarios y contraseñas deben ser enmascarados en aplicaciones de ambientes de producción.

Necesidad

Enmascarar el texto ingresado por el usuario en COBOL.

Contexto

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

  1. Se está desarrollando una aplicación en COBOL.

  2. La aplicación no debe mostrar el texto ingresado por el usuario (contraseñas, información sensible, etc).

  3. Los datos de ambientes diferentes a producción deben encontrarse enmascarados[1].

Solución

  1. Definimos las divisiones de la aplicación:

    cobolpass.cbl
    1
    2
    3
    4
    5
           IDENTIFICATION DIVISION.
          ******************
          * Identification *
          ******************
           PROGRAM-ID. COBOLPASS.
    

    Mediante PROGRAM-ID definimos el nombre del programa, en este caso COBOLPASS.

  2. Declaramos las variables W01-USERNAME y W02-PASSWORD:

    1
    2
    3
    4
    5
    6
    7
    8
          ********
          * Data *
          ********
           DATA DIVISION.
    
           WORKING-STORAGE SECTION.
           01 W01-USERNAME PIC X(20).
           01 W02-PASSWORD PIC X(20).
    

    En esta división podemos definir entre otras cosas, las variables utilizadas por el programa. Para ello, dentro de la sección: WORKING-STORAGE SECTION definimos todas las variables que se van a utilizar. Cada variable que se defina dentro de dicha sección, debe constar de las siguientes tres partes[2]:

    • Número de Nivel: el número de nivel le informa al compilador el tipo de campo utilizado. En este caso es 01, indicando la primer entrada de un registro o la primer entrada de un campo que se va a subdividir.

    • Nombre de Variable: es un identificador de variable, el cual, no puede consistir de ninguna palabra clave dentro de COBOL, ni consistir de caracteres extraños. Se suele utilizar letras, números y guiones. En el código anterior se declaran dos variables como: W01-USERNAME y W02-PASSWORD.

    • PICTURE/PIC: el propósito de esta palabra reservada es identificar el tipo de dato que va a contener la variable. En este caso su valor es X, indicando valores alfanuméricos con 20 caracteres de longitud.

  3. Definimos el algoritmo o las tareas realizadas por el programa dentro de la división PROCEDURE DIVISION[3]:

    1
    2
    3
    4
    5
    6
    7
          ********
          * Main *
          ********
           PROCEDURE DIVISION.
           MAIN.
               DISPLAY "Username: ".
               ACCEPT W01-USERNAME.
    

    Mediante DISPLAY podemos desplegar texto en pantalla y con la instrucción ACCEPT[4],[5] es posible capturar datos desde el teclado. En este caso se solicita el nombre de usuario y el valor ingresado por el usuario es almacenado en la variable W01-USERNAME.

  4. De manera similar, la contraseña es solicitada al usuario y almacenada dentro de la variable W02-PASSWORD. Sin embargo, en esta ocasión el texto ingresado por el usuario es enmascarado mediante las instrucciones NO-ECHO o SECURE de tal forma que un tercero no pueda visualizarlo:

    1
    2
    3
    4
           DISPLAY "Password: ".
           ACCEPT W02-PASSWORD WITH NO-ECHO.
    
           STOP RUN.
    

Descargas

Puedes descargar el código fuente pulsando en el siguiente enlace:

  1. cobolpass.cbl contiene los pasos necesarios para enmascarar el texto explicado anteriormente.




Haz un comentario

Estado de los servicios - Términos de Uso