Newsgroup: it.comp.lang.perl
Titolo: handle di un database da file script esterno

Ho bisogno di aprire un database mySQL da un mio script perl. Nessun
problema tutto funziona perfettamente.
Però l'apertura di un database richiede di inserire nello script tutte
le informazioni necessarie, queste ultime, se osservate da un utente
esperto, possono dare l'accesso al database che contiene informazioni
riservate.
Il mio script deve, per motivi tecnici, risiedere in una directory che
può essere hackerata da un utente esperto. Dunque l'idea è di
separare la parte dello script che apre il database in un'altra
directory non visibile da utenti.
Lo schema è all'incirca il seguente:
--directory pubblica
  |__script hackerabile
--directory privata (es. cgi-bin)
  |__script che apre il database e restituisce l'handle
Lo script hackerabile chiama lo script che apre il database e usa
l'handle
Ci sto provando con i comandi "use" e "require" senza successo.
Qualcuno ha un'esempio che può aiutarmi?
Ciao
Oreste


Non ho capito quale sia esattamente il problema che stai incontrando (ce
ne possono essere diversi), per cui ti mostro una (possibile) soluzione
completa.
Questa è un'esemplificazione del *modulo* (non è uno script!) che
risiede nella directory non accessibile:
# File Connector.pm
#-------------------------------------------------------------
package Connector;
use strict;
use DBI;
my $HOST     = 'localhost';
my $DB_NAME  = 'test_db';
my $USERNAME = 'test_username';
my $PASSWORD = 'test_pwd';
my $DSN = "DBI:mysql:database=$DB_NAME;host=$HOST";
my $ATTR = { RaiseError => 1 };
sub db_connect {
     my $dbh = DBI->connect($DSN, $USERNAME, $PASSWORD, $ATTR);
     return ($dbh, $DBI::errstr)
}
1;
#-------------------------------------------------------------
E questa è un'esemplificazione dello script /hackerabile/:
#----------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
use lib 'path/to/directory/protetta';
use Connector;
my ($dbh, $db_error) = Connector::db_connect();
die $db_error unless $dbh;
# ...
# Lavori sul tuo db tramite l'handle $dbh
# ...
# ... E quando hai finito:
$dbh->disconnect;
#----------------------------------------------
Inutile aggiungere che c'è una quantità (non numerabile) di soluzioni
alternative.
Ciao,
Emanuele.

Grazie Emanuele lo provo subito.
Potremmmo entrare in società e realizzare insieme l'dea.
Se sei interessato scrivimi in privato ed io ti invio l'idea del
progetto.
Un caro saluto
Oreste Parlatano
ore...@parlatano.com
www.oreste.parlatano.com
+258 84 22 80 620

Funziona da dio!
Emanuele sei un genio.
Ciao
Oreste

 Funziona da dio!
Scusa se mi intrometto, ma il tuo problema di sicurezza non mi sembra
risolto.
Se io sono l'utente che ti deve hackerare lo script basta che guardi lo
script e me ne scriva uno che usando il modulo Connector si fa
restituire il dbh e poi ci faccio sopra le query che voglio.
Cosa cambia?
D'altra parte nel momento stesso in cui lo script è accessibile sei tu
stesso che dai all'utente un'interfaccia per svolgere alcune funzioni
sul database.
La sicurezza in questo senso la raggiungi dandi i permessi giusti
all'utente che usi per collegarti al database.

 sul database.
Per l'appunto, insisti in questa arbitraria commistione di situazioni: 
script "accessibile" non vuol mica dire che uno può alterarlo e
poi ricaricarlo sul tuo server! Può voler dire soltanto che lo script è 
leggibile (per qualsivoglia motivo, metti che faccia parte di una 
porzione "pubblica" di un dato progetto), per cui è del tutto sensato 
nascondere i dati di accesso al db.
Non so da cosa derivi la tua certezza sul fatto che il server sia 
accessibile da chiunque in scrittura, a meno che tu non abbia chiara la 
differenza tra accesso in lettura ed accesso in scrittura (o addirittura 
pensi che una variabile lessicale sia accessibile da un ambiente 
remoto?!! :-)
Ciao,
Emanuele.

 remoto?!! :-)
... !