Fluid Attacks logo
Contact Us
Young hacker smiling
Zero false positives

Expert intelligence + effective automation

Contact logo Contact Us
GET A DEMO

Enmascarar Texto

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.


Service status - Terms of Use