Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Usar Estructuras Optimizadas

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en COBOL al utilizar estructuras optimizadas. Las estructuras optimizadas mejoran el rendimiento del programa y pueden ser incluidas al utilizar la sentencia COPY.

Necesidad

Usar la instrucción COPY para incluir estructuras de datos optimizadas 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. El código debe utilizar contenedores o estructuras de datos optimizadas[1].

Solución

  1. La sentencia COPY es muy diferente a otras sentencias en COBOL. Mientras que otras son ejecutadas en tiempo de ejecución, la sentencia COPY es ejecutada en tiempo de compilación.

  2. Esta sentencia es similar a la sentencia include de C/C++, el código contenido en el miembro declarado en la sentencia COPY es copiado directamente en el código fuente y posteriormente compilado. Este proceso ayuda a mantener estructuras de datos optimizadas y centralizadas para su posterior uso. En la siguiente solución encontrará la forma de copiar código almacenado en bibliotecas reusables desde COBOL.

  3. Creamos un nuevo miembro llamado QPHONE en la biblioteca Fluid-Attacks del archivo QRPGSRC. Este archivo contiene una estructura de datos optimizada para el almacenamiento de registros telefónicos:

    • PHONE-LAST-NAME: Contiene el apellido.

    • PHONE-FIRST-NAME: Contiene el nombre.

    • PHONE-NUMBER: Contiene el número telefónico.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
          *** START HEADER FILE SPECIFICATIONS ****************************
          *
          *Header File Name: QPHONE.CBLINC
          * LANGUAGE:     COBOL                                            *
          *
          *Descriptive Name: Estructura de datos para registros telefonicos
          *
          *Description: Estructura reutilizable para registros telefonicos
          *
          *** END HEADER FILE SPECIFICATIONS ******************************
    
           01 PHONE-RECORD.
               05 PHONE-LAST-NAME  PIC X(10).
               05 PHONE-FIRST-NAME PIC X(10).
               05 PHONE-NUMBER     PIC X(10).
    
  4. En el momento de crear un nuevo programa que requiera el uso de registros telefónicos, se incluye el código reutilizable a través de la sentencia COPY.

  5. Se define el nombre del programa mediante la división IDENTIFICATION DIVISION:

    cobolcopyb.cbl
    1
    2
    3
    4
    5
           IDENTIFICATION DIVISION.
          ******************
          * Identification *
          ******************
           PROGRAM-ID. COBOLCOPYB.
    

    En este caso, mediante la sentencia PROGRAM-ID se designa al programa bajo el nombre de COBOLCOPYB.

  6. En la división de datos DATA DIVISION hacemos uso de la sentencia COPY la cual debe seguir el siguiente formato[2],[3]:

    formato
  7. Si file-name no es especificado, el archivo QCBLLESRC es asumido por defecto. Puede especificar el nombre del archivo y la biblioteca usando el formato MYLIB-MYFILE.

  8. Copiamos el código contenido en el miembro QPHONE que se encuentra en la biblioteca Fluid-Attacks del archivo QRPGSRC:

    1
    2
    3
    4
    5
    6
          ********
          * Data *
          ********
           DATA DIVISION.
           WORKING-STORAGE SECTION.
           COPY QPHONE OF Fluid-Attacks-QRPGSRC.
    
  9. Hacemos uso de la estructura PHONE-RECORD:

    1
    2
    3
    4
    5
    6
    7
          ********
          * Main *
          ********
           PROCEDURE DIVISION.
           MAIN.
               MOVE "Apellido  Nombre    3001234982"
               TO PHONE-RECORD.
    
  10. Mostramos los datos usando cada variable de la estructura:

    1
    2
    3
    4
    5
           DISPLAY "Nombre: " PHONE-FIRST-NAME.
           DISPLAY "Apellido: " PHONE-LAST-NAME.
           DISPLAY "Numero tel: " PHONE-NUMBER.
    
           STOP RUN.
    
  11. La biblioteca QSYSINC provee todos los archivos de inclusión para las interfaces de programación de aplicaciones incluidas en el sistema operativo. Para el lenguaje de programación COBOL, los archivos de inclusión se encuentran en la biblioteca QSYSINC del archivo QCBLLESRC.

  12. A través del comando para trabajar con miembros podemos obtener la lista completa de archivos de inclusión para COBOL:

    1
           WRKMBRPDM FILE(QSYSINC/QCBLLESRC)
    

    Algunos de ellos están especificados en la siguiente tabla:

    Tabla 1. Lista de algunos archivos de inclusión.
    Nombre Descripción

    DSQCOMMB

    API de administración de sentencias

    JNI

    Interfaz nativa de Java

    QC3CCI

    API de Criptografía

    QSY

    API de seguridad

    QTEDBGS

    API de depuración

    QUS

    API de espacio de usuario

    QUSEC

    Parámetro de la interfaz para errores de código

Descargas

Puedes descargar el código fuente pulsando en los siguientes enlaces:

  1. qphone.cbl contiene una estructura de datos optimizada para el almacenamiento de registros telefónicos.

  2. cobolcopyb.cbl contiene las instrucciones del programa principal.




Haz un comentario

Estado de los servicios - Términos de Uso