Come proteggere le proprie app
Salve lettore, in questo articolo voglio parlarti di un argomento che normalmente passa in secondo piano ma è un argomento sensibile per chi sviluppa applicazione e ne vuole mantenere la proprietà intelettuale.
Quando creiamo un file .app attraverso VS Code, tramite i vari comandi proposti, tale file, purtroppo, può essere aperto tramite programmi di compressione, come ad esempio 7Zip.
Infatti se proviamo ad aprire con 7Zip il file .app prodotto da VS Code, vediamo tutta la struttura della nostra app progettata con VS Code, e possiamo accedere ai sorgenti. Questa non è una buona notizia se lavoriamo in progetti onPrem con una nostra soluzione verticale che distribuiamo ai vari clienti.
Tuttavia possiamo tutelare la nostra attività intellettuale togliendo la possibilità a programmi come 7Zip di aprire i file .app. Per farlo dobbiamo creare il pacchetto con PowerShell tramite il comando Get-NAVAppRuntimePackage.
Il comando esteso è: Get-NAVAppRuntimePackage -ServerInstance $Instance -Name $AppName -Version $AppVersion -Path $AppPath
Dove -Path rappresenta il percorso dove vogliamo salvare il file .app. L’effetto sarà che sarà inibita l’apertura del file .app.
Se l’app ha dipendenze, attenzione ad eseguire il comando sopra citato perché Powershell potrebbe restituire un errore, come nell’immagine sotto.
In questo caso è sufficiente aggiungere la proprietà -Tenant e il tenant da cui si fa il pacchetto al comando, che sarà:
Questa modalità, alla fine, non scarica il codice sorgente, ma solo gli artifact utilizzati dal server (praticamente un file senza sorgente e simboli). E’ anche interessante sapere che questa distribuzione può essere installata su server che non dispongono di licenza da sviluppatore.
Oltre alla limitazione dell’onPrem, la distribuzione runtime, deve essere generata ed installata solo su versioni uguali, cioè se creo un pacchetto con la versione 20.4, la posso installare solo su versioni basate sulla 20.4. Si potrebbe, comunque, bypassare questa limitazione andando ad eseguire il comando Powershell Repair-NavApp per ricompilare il pacchetto sulla nuova piattaforma (es. creo il pacchetto in 20.1 e lo voglio installare in versione 20.4). E’ comunque un workaround, come recita la documentazione ufficiale non è garantito il corretto funzionamento dell’app ricompilata con questa metodologia.
Inoltre devi sapere che di default non è possibile utilizzare il debug su un’app di runtime. Tuttavia è possibile farlo, ricreando il pacchetto aggiungendo un ulteriore parametro -IncludeSourceInPackageFile $true.
Non preoccuparti per questo ulteriore parametro, esso dice solo se il pacchetto deve contenere il codice sorgente oppure no, esso non influisce sull’esposizione del codice stesso. Questo viene sempre definito dalla proprietà ResourceExposurePolicy sul file app.json dell’app.
Spero che questo articolo ti abbia dato qualche spunto in più per distribuire in maniera più efficiente le tue app.