Nascondere una variabile dal registro con i caratteri di sottolineatura ... Quasi funzionaAl recente JMP Summit stavo chiedendo agli sviluppatori come avrei potuto nascondere una variabile che conteneva credenziali in un database. La mia soluzione attuale è all'80% del percorso. Imposto le credenziali in una variabile in uno script crittografato, quindi includo() quello script e utilizzo la variabile in uno script che si connette al database. Chiunque apra lo script principale può vedere le credenziali accedendo al file di registro e cercando la variabile. Gli sviluppatori JSL erano molto richiesti al Summit e le altre persone con cui ho parlato non erano sicure su come nascondere una variabile.
Poi ho visto questo: Crittografia e variabili globali (jmp.com)
Se metti solo due caratteri di sottolineatura prima di una variabile, li nasconderà... quasi. Se provi Mostra ( __myVar), Stampa ( __myVar) o Scrivi ( __myVar), il risultato sarà vuoto. Grande! Ma poi ho scoperto che se digiti __myVar direttamente nel registro, il registro lo definisce per te. Questo è in realtà uno dei modi più semplici per mostrare la variabile...
Sembra una scappatoia non voluta. Il doppio carattere di sottolineatura interrompe tutti quei metodi di script e se passi con il mouse sul nome della variabile nello script non ne mostrerà il contenuto. Ma esiste un modo davvero ovvio per mostrare i contenuti semplicemente inserendo direttamente la variabile.
Ho buone ragioni per non voler crittografare lo script principale, solo la stringa di connessione. Non sono sicuro se si tratta di un articolo della lista dei desideri o se mi manca qualcosa.
Automazione e scriptingRi: Nascondere una variabile dal registro con caratteri di sottolineatura... Quasi funzionaSe guardi il mio discorso "JMP e Oracle..." menzionato sopra, questo è quello che faccio:
- Crea una funzione crittografata che restituisce la connessione al database.
Ecco la parte finale della funzione:
my_dbc = create database connection(dsn_string);
// Return the connection to Oracle
my_dbc;
Ri: Nascondere una variabile dal registro con caratteri di sottolineatura... Quasi funzionaApparentemente puoi anche vedere tutte le variabili "nascoste" nel debugger.

Ri: Nascondere una variabile dal registro con caratteri di sottolineatura... Quasi funzionaGrazie! Penso che questo mi porti al 99% del percorso. Risolve bene il problema variabile. L'1% è che posso vedere le credenziali quando viene eseguito il comando Include(). Chiunque guardi lo script può vedere qualcosa come Include(db_credentials), eseguire quella riga e guardare nel file di registro.
Per me assomiglia a questo:
Include("DSN encrypted function.jsl");
//Log file shows:
//:*/
Include("DSN encrypted function.jsl");
/*:
Function( {},
{Default Local},
dsn_string = "DSN=myDSN;UID=" || "uname" || ";PWD=" || "pwd" || ";";
my_dbc = Create Database Connection( dsn_string );
my_dbc;
)Inoltre non affronta la parte della mia domanda sulla tecnica dei due caratteri di sottolineatura. Perché averlo se oscura solo parzialmente le variabili? È per sicurezza o per qualche altro scopo?
Ri: Nascondere una variabile dal registro con caratteri di sottolineatura... Quasi funzionaIn realtà, mi porta al 100% del percorso. Mi è venuto in mente che Include mostrerebbe solo l'ultima cosa che ha fatto nel registro. Ho aggiunto Print("Questa è l'ultima cosa") e ora non riesco a vedere la definizione della funzione.
Grazie!
Ri: Nascondere una variabile dal registro con caratteri di sottolineatura... Quasi funzionaPenso che tu debba:
- crea una funzione crittografata per eseguire la query che contiene la stringa di connessione all'interno della funzione (non restituirla mai)
- creare una funzione crittografata che si apre la connessione al database (non è possibile utilizzare New SQL Query() se si utilizza this che è il metodo preferito in JMP per eseguire query sui dati )
- Usa qualcosa come il gestore delle credenziali di Windows
Gli script JMP incorporano parametri DSN; Perché??
Come gestire le informazioni sulla password dell'utente in JSL (stringhe di connessione ODBC)
JMP e Oracle: consigli e suggerimenti per un matrimonio felice (2022-US-30MP-1093)
Ri: Nascondere una variabile dal registro con caratteri di sottolineatura... Quasi funzionaHo ridefinito le variabili sensibili come Vuoto() dopo averle usate, quindi, anche se qualcuno ottiene i nomi delle variabili, queste non conterranno alcuna informazione.
Re: Nascondere una variabile dal registro con caratteri di sottolineatura... Funziona quasi</CODE></PRE>
<P>ottima idea!<BR /> Ho trovato questa raccomandazione in<BR /> <A href="https://www.jmp.com/support/help/en/19.0/?os=win&source=application#page/jmp/work-with-expressions-in-an-encrypted-script.shtml#" target="_blank" rel="noopener noreferrer">https://www.jmp.com/support/help/en/19.0/?os=win&source=application#page/jmp/work-with-expressions-in-an-encrypted-script.shtml#</A></P>
<PRE><CODE class=" language-jsl">

</CODE></PRE>
<P>D'altro canto, <A href="https://www.jmp.com/support/help/en/19.0/?os=win&source=application#page/jmp/encryption-and-global-variables.shtml" target="_blank" rel="noopener noreferrer">https://www.jmp.com/support/help/en/19.0/?os=win&source=application#page/jmp/encryption-and-global-variables.shtml</A> è più un avvertimento che una strategia:</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_1-1763829135582.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="hogi_1-1763829135582.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/87531iDDA2ACB34BC016E4/hogi_1-1763829135582.png" role="button" title="hogi_1-1763829135582.png" alt="hogi_1-1763829135582.png" /></span></SPAN></P>
<PRE><CODE class=" language-jsl">
</CODE></PRE>
<BR />
<PRE><CODE class=" language-jsl"><BR /><BR />Names default to here(1);
__Hello=1;
Show(__Hello);
Show(Char(__Hello));
new namespace("__Test");
__Test:Hello=1;
Show(__Test);
Show namespaces();
lo stesso vale per la crittografia:
//-e12.1
0,
344,4353eJwNzdmRhSAQAMB8NoWRc0AERu5DzT+Qff9d1QFHqsV6JkdVotYlkkDhRd03clZQQT4lY/V9by5qQPZ9+cMUryFddMeUzS/o
xBrLU9Be+4jFDalbz/jcKoH6mKax/aHIcsukQunhCmoHGbPI3PlbvwfT9ime6fmsTLNx7dCG3WexZhOfUzvj9U3itCUnjnbdv3yj
AaaaOb9Y+hhpa97cISVRJJVBVNCklH+vNc37BuxS3iv9QMQa4/lOEyo3hZ56pN5qBk8XfRSHcw3c5vwEgG20xmhAQ+w2zYhIk6+k
SDhYpzxVziJBoDwOpTSXHKXq2e3o1hnd+PsHyKdkiw==
,0,
Show(__Hello);
Show(Char(__Hello));
Show Namespaces()
...con ancora accesso a tutte le definizioni.