Source al sicuro con la chiave di codifica debug

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

Recent Posts

VsCode Extension: Bob Cozzi’s RPG IV to RPG Free Conversion

L’estensione “RPG IV to Free Format Conversion” sviluppata da Bob Cozzi (Cozzi Research) è pensata per semplificare la conversione di…

1 mese ago

IBM i & SQL Tips #010 – Localizzare programmi nella Call Stack con STACK_INFO

Ciao a tutti, oggi voglio segnalarvi un altro interessante contributo di Massimo Duca, parte della sua ormai nota serie IBM…

1 mese ago

Display file DDS Edit per VsCode, nuova preview.

Incuriosito da alcuni messaggi di Cristian Larsen su Linkedin (New Release - Display File DDS Edit v.0.10.1) ho voluto scaricare…

2 mesi ago

Project Bob: il nuovo strumento AI di IBM per sviluppo COBOL su IBM Z e RPG su IBM i

Ciao a tutti,oggi voglio segnalarvi un annuncio che potrebbe segnare una svolta per lo sviluppo applicativo su ambienti IBM: Project…

2 mesi ago

IBM i & SQL Tips #6: chiamare API REST e analizzare le risposte JSON con SQL

Voglio segnalarvi un nuovo articolo molto interessante di Massimo Duca nella serie IBM i & SQL Tips. In questo sesto…

3 mesi ago

Come funziona il passaggio di parametri a un programma IBM i (RPG / Cobol)

Ciao a tutti, voglio segnalarvi un post molto utile di Marco Riva sul suo sito Markonetools, in cui spiega in…

3 mesi ago