[Tech] Perl e cgi-bin

Franco Bagnoli bagnoli@dma.unifi.it
Gio 21 Set 2000 07:07:13 CEST


On Wed, 20 Sep 2000, francesco.mugelli wrote:

> Sto cercando di scrivere un programmino perl che vorrei usare come cgi-bin.
> Ho bisogno di fare un grep su un file e assegnare l'output ad una variabile. Ho provato con 
> 
> $dati=`grep stringa /path/nomefile`;
> 
> e funziona. Pero' se sostituisco una variabile a /path/nomefile non
> funziona piu nulla. Immagino che il problema sia esportare le
> variabili del perl verso la bash pero' non so come risolvere il
> problema, anche perche' e' la prima volta che mi metto a scrivere
> qualcosa in perl.

$dati=`grep stringa $variabile`; 

va benissimo. Tieni presente pero' che:
1) il cgi gira con i permessi del server httpd, controlla che la directory
sia leggibile dall'utente (nobody?) del server
2) scritta cosi' la stringa e' "tainted" (ovvero compromessa: un hacker
potrebbe sostituire il comando grep nel path o, se $variabile viene da una
form, scrivere qualcosa del tipo "pippo; cat /etc/password"
cosi' che hai 

grep stringa pippo; cat /etc/password

e se perl lo fai girare con l'opzione -w si rifiuta di eseguire le
istruzinoi tainted, devi 
1) usare un path completo per il comando grep
2) esaminare la $variabile, per esempio
$variabile =~/^(.*)$/;
$variabile = $1;

( a parte il fatto che e' stupido in quanto non controlli nulla, meglio
sarebbe eliminare tutti i caratteri non alfanumerici 
$variabile =~ /^([\d\w\s]*)/;
)

> 
> Qualcuno sa anche dove potrei trovare in rete un manuale perl?

ce l'hai con il perl, non sara' proprio amichevole ma e' uno dei migliori.


Franco Bagnoli
Dipartimento di Matematica Applicata "G. Sansone"
Universita' di Firenze, Via S. Marta, 3 I-50139 Firenze, Italy
tel. +39 0554796422, fax: +39 055471787
e-mail: bagnoli@dma.unifi.it






Maggiori informazioni sulla lista flug-tech