Gli script JMP incorporano parametri DSN; perché??<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Gli script JMP incorporano i parametri di connessione dati all'interno del file JSL.C'è qualche ragione per una tale pratica impropria di programmazione?Immagina di avere centinaia di JSL e l'amministratore SQL ha deciso di modificare le credenziali del server o del database.Perché non utilizzare i DSN come intermediari?
Re: Gli script JMP incorporano i parametri DSN; perché??Ho provato questa soluzione e ho ottenuto il 90% del risultato...
Sto ottenendo una connessione riuscita al mio database, ma anche se le informazioni DSN importate con la funzione include hanno i valori UID e PWD, la connessione mi chiede comunque di inserire il nome DSN e la password in una finestra popup ODBC.
Qualche idea sul perché questo accade?
//Ottieni le credenziali DSN
::Ottieni credenziali DSN = "DRIVER={Oracle in OraClient11g_home1};DSN=mioDB;UID=mioUID;PWD=mioPWD;DBQ=mioDB;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL =10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;" ;
// Non restituisce nulla
;
Il mio script Jmp si connette correttamente:
Se ( è vuoto (::Ottieni credenziali DSN),
includere ( "C:\_Script JMP\DSN JMP\ Ottieni credenziali DSN .jsl" );
);
CONNETTI = creare una connessione al database (::Ottieni credenziali DSN);
SQL1 = "SELEZIONA * DA DB.TABLE " ;
OUTFILE1 = "Il mio nome file" ;
dt1 = Apri database (CONNESSIONE, SQL1, OUTFILE1);
Ma mi chiede ancora il mio nome DB e la mia password...
Re: Gli script JMP incorporano i parametri DSN; perché??È meglio di quello che ho fatto.Grazie per la condivisione.Ho il "lusso" di lavorare con utenti non esperti.
Re: Gli script JMP incorporano i parametri DSN; perché??Questa è una soluzione di sicurezza scadente.Tutto quello che dovrei fare per ottenere il nome utente e la password per il tuo database sarebbe eseguire:
includere ( "$ADDIN_HOME(com.mydept.myapp)\Ottieni DSN_CREDENTIALS.jsl" ) ;
:: le mie_dsn_credenziali;
Ciò che è archiviato in ::my_dsn_credentials verrà visualizzato nel file di registro in testo normale.Per non parlare della memorizzazione delle credenziali in un unico posto come variabili globali, potrei facilmente eseguire questo:
includere ( "$ADDIN_HOME(com.mydept.myapp)\Ottieni DSN_CREDENTIALS.jsl" ) ;
mostra globali() ;
Ora ho tutte le informazioni sul database archiviate in Get DSN_CREDENTIALS.jsl, anche i database non utilizzati nello script originale I ricevuto .Questa seconda parte può essere risolta facilmente cambiando tutto "::" in "__" (doppio underscore), quindi ::my_dsn_credentials diventa __my_dsn_credentials.Ciò nasconderà la visualizzazione delle variabili globali in show globals(); funzione. Tuttavia, ciò non risolve ancora il problema in cui il database specificato è compromesso. Questo può anche essere risolto seguendo il formato:
Ottieni DSN_CREDENTIALS.jsl :
// Ottieni DSN_CREDENTIALS.jsl
__my_dsn_credentials = "Driver={Oracle in OraClient11g64_home1};Dbq=MY_DATABASE;UID=MYUSERID;PWD=MYPASSWORD;" ;
__dbc = creare una connessione al database (__ le mie_dsn_credenziali ) ;
// Non restituisce nulla
__my_dsn_credentials = . ;
Questo risolve due problemi.Uno puoi passare __dbc a un altro script.Se si esegue __dbc; passerà 'Database( "Oracle in OraClient11g64_home1(MY_DATABASE)" )' al registro per lo script precedente.La visualizzazione del driver e del database rappresenta una minaccia per la sicurezza molto minore rispetto al passaggio di un nome utente e una password.In secondo luogo, e questo è importante, __my_dsn_credentials viene sovrascritto.Ciò significa che anche se dovessero indovinare la variabile, le informazioni sono comunque al sicuro.
Re: Gli script JMP incorporano i parametri DSN; perché??Non sembra essere nelle preferenze per JMP 10. È nella guida allo scripting JSL a pagina 480. Devi impostarlo in JSL.Ecco la parte rilevante:
Nota: quando si importano dati da un database ODBC, viene aggiunta una variabile di tabella che può contenere l'ID utente
e informazioni sulla password. Per evitare che ciò accada, imposta la seguente preferenza solo JSL:
pref ( ODBC Nascondi stringa di connessione ( 1 )) ;
Re: Gli script JMP incorporano i parametri DSN; perché??prima di pubblicare questo commento non sono riuscito a trovare alcuna informazione sulla gestione di ODBC.La mia versione di JMP 10 non ha questa opzione.

Re: Gli script JMP incorporano i parametri DSN; perché??Soluzione intelligente; Grazie per aver condiviso!
Re: Gli script JMP incorporano i parametri DSN; perché??Ho centinaia di script JSL che effettuano chiamate a un database Oracle tramite ODBC.Tuttavia, non incorporo parametri di connessione dati separati all'interno di ciascun file JSL.Invece uso un'istruzione INCLUDE per eseguire un singolo file JSL che definisce la stringa DSN.
Ecco come appare il mio codice:
Ho uno script JSL, chiamato Ottieni DSN_CREDENTIALS.jsl :
// Get DSN_CREDENTIALS.jsl
::my_dsn_credentials = "Driver={Oracle in OraClient11g64_home1};Dbq=MY_DATABASE;UID=MYUSERID;PWD=MYPASSWORD;";
// Return nothing
.;
Crittografo lo script utilizzando la capacità di crittografia del codice di JSL, a proposito.
Quindi, ogni volta che ho bisogno della stringa di connessione, utilizzo un codice simile a questo:
// Get database access string
if (is empty(::my_dsn_credentials),
include("$ADDIN_HOME(com.mydept.myapp)\Get DSN_CREDENTIALS.jsl");
);
dbc = create database connection(::my_dsn_credentials);
sql_statement = "SELECT SYSDATE FROM DUAL";
dt = execute sql(dbc, sql_statement);
close database connection(dbc);
Re: Gli script JMP incorporano i parametri DSN; perché??La maggior parte dei nostri clienti trova questa funzionalità utile e in effetti è stata aggiunta a causa delle richieste dei clienti.È facilmente eliminabile selezionando Preferenze->Tabelle->ODBC Nascondi stringa di connessione.Questo potrebbe essere diffuso agli utenti tramite un file delle preferenze specifico per la tua organizzazione.