01 - Programmazione01e - Varie Programmazione IBM i04f - Sicurezza

Source al sicuro con la chiave di codifica debug

Last Updated on 17 Settembre 2019 by Roberto De Pedrini

Per le aziende che distribuiscono ed installano il proprio software sui sistemi dei clienti, non è ovviamente consigliabile lasciare i propri sorgenti “incustoditi” su quei sistemi.
Ma anche senza installare i sorgenti, un utente “evoluto” potrebbe accedere al codice semplicemente attivando il debug per programmi compilati con opzioni di incorporazione del sorgente DBGVIEW(*SOURCE / *LIST / *ALL). D’altra parte, compilare i programmi senza questa opzione rende complicate le operazioni di debug (che prima o poi inevitabilmente capitano…).
Fin dalla 7.1, IBM ha reso disponibile una nuova opzione su tutti i comandi di compilazione di programmi e moduli ILE; il parametro Chiave di codifica debug (DBGENCKEY) permette di proteggere il source con una sorta di “password” che permette di distribuire dei programmi perfettamente debuggabili senza che altri possano accedere al codice sorgente (a meno di conoscere la chiave di codifica).
Proviamo a compilare un programma specificando questa opzione:

           Creazione oggetto RPG ILE SQL (CRTSQLRPGI)          
 
Immettere le scelte e premere Invio.        

File di stampa . . . . . . . . . PRTFILE        QSYSPRT               

   Libreria . . . . . . . . . . .                  *LIBL               

 Visualizzazione di debug . . . . DBGVIEW        *source               

 Chiave di codifica debug . . . . DBGENCKEY      DeBuGKeY              

 Profilo utente . . . . . . . . . USRPRF         *NAMING               

 Profilo utente dinamico  . . . . DYNUSRPRF      *USER                 

 Sequenza di ordinamento  . . . . SRTSEQ         *JOB                  

Come tutte le password, anche la chiave di codifica debug è sensibile alla differenza fra maiuscole e minuscole.
Per “ingannare” il debugger ora rinominiamo il sorgente; diversamente, sentendo che il programma è stato compilato sullo stesso sistema e trovando il sorgente, la sessione di debug si avvierebbe normalmente con la visualizzazione del source.

RNMM FILE(MDUCA1/QRPGLESRC) MBR(TESTR06) NEWMBR(TESTR06$)

Avviando ora il debug per questo programma, viene richiesta la chiave di codifica:

                Immissione chiave di decodifica        

File origine . . :   QRPGLESRC        Modulo . . . . . :   TESTR06         

Libreria origine :   MDUCA1           Libreria . . . . :   MDUCA1           

Membro origine . :   TESTR06                                                

Vista corrente:   Vista elenco ILE RPG                                      

Immettere la chiave di decodifica e premere invio.                          

                                                                   Fine     
F3=Fine   F12=Annull                                     
                 

Se non si immette la chiave, si potrà soltanto fare un debug “alla cieca”…

                     Visualizzazione origine modulo                      

 Programma:   TESTR06        Libreria:   MDUCA1         Modulo:   TESTR06    

   (L'origine non è disponibile.)                                            

La schermata di richiesta ammette al massimo tre tentativi di inserimento della chiave, dopo tre errori la chiave non viene più richiesta e si entra direttamente in modalità debug “oscuro”.
Grazie a questa caratteristica, è possibile avviare in sicurezza sessioni di debug locali o remote senza rischiare che qualcuno possa “curiosare” nel proprio codice.

Related Posts
DB2 for i SQL – Stringhe – POSSTR-LOCATE-LOCATE_IN_STRING (IT)

Introduzione Spesso, nelle nostre applicazioni, abbiamo la necessità di lavorare con le stringhe di testo e l'SQL del DB2 può Read more

DB2 for i & SQL – FAQ & Howto (Part. 1) (IT)

Database DB2 e SQL ... forse lo strumento più potente e completo che abbiamo sulla piattaforma IBM i: ecco una Read more

Annuncio IBM i 7.4

Arriva direttamente con l'uovo di Pasqua questo annuncio IBM per le novità della versione IBM i 7.4, versione iNext secondo Read more

Generated Always Columns – Approfondimenti (IT)

Introduzione "Generated Always Column": sono colonne, campi, di una tabella il cui contenuto è controllato direttamente dal sistema ... e Read more

About author

Senior Analyst/Developer e divulgatore in ambito IBM i. Già collaboratore dell'edizione italiana della rivista "System i News" ed autore di diverse pubblicazioni su tools e tecniche di sviluppo in ambiente IBM i.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *