Form e metodo POST

27/04/2006

Il metodo GET, pur utilissimo, pone dei problemi di sicurezza non indifferenti in sede di sviluppo: innanzitutto bisogna considerare che il passaggio dei dati in querystring viene effettuato "in chiaro", questo vuol dire che nel momento in cui viene prodotta un'URL sulla base dell'input di un utente, questa potrà essere visibile a chiunque possa controllare le fasi della sua navigazione; se vengono passati in querystring alcuni dati "sensibili", come per esempio delle password, le implicazioni in termini di sicurezza divengono chiare anche ai profani della programmazione.

In secondo luogo, un applicativo che funziona sulla base di parametri trasmessi tramite una querystring produce differenti comportamenti sulla base degli argomenti che raccoglie; teoricamente e in mancanza di oppurtune clausole di controllo, tramite una querystring è possibile far passare di tutto ad uno script CGI, comprese istruzioni nefaste quali l'esecuzione di comandi di cancellazione o modifiche non previste dei dati.

Pur non essendo del tutto esente da rischi, il metodo POST ci permette di passare informazioni all'applicazione in modo più sicuro; infatti POST non prevede il passaggio in chiaro dei parametri.

Anche per questo secondo metodo faremo un esempio basato sull'invio di dati tramite un modulo form:

<html> 
<head> 
<title>Form</title> 
</head> 
<body> 
<form action="http://www.miosito.it/cgi-bin/script.cgi" method="post"> 

Nome: <input name="nome" type=text size=30><br /> 
Cognome: <input name="cognome" type=text size=30><br /> 
E-mail: <input name="email" type=text size=30><br /> 

<input type=submit value="Invia"> 
</form> 
</body> 
</html>
Il modulo presentato è molto semplice, per il suo completamento richiede tre parametri di input: nome, cognome ed e-mail.

Diamo ora uno sguardo al codice che riceverà ed elaborerà i dati inviati tramite il form:
#!/usr/bin/perl

&readparse;
print "Content-type: text/html\n\n";
print "<h1>Dati ricevuti!</h1>";
$nome = $value[0]; 
$cognome = $value[1]; 
$email = $value[2]; 

print "Il tuo nome è: $nome<br />"; 
print "Il tuo cognome è: $cognome<br />"; 
print "La tua mail è: $email<br />";

Il funzionamento dello script proposto risulterà sicuramente abbastanza chiaro anche a chi ha poca pratica di Perl: Come si avrà modo di notare testando lo script proposto, i parametri per l'esecuzione verranno comunque passati pur non generando una querystring destinata a contenerli.

Attenzione: questo articolo è stato concesso in esclusiva per la pubblicazione a Mrwebmaster.it; ne è vietata la riproduzione,
anche parziale, senza l'esplicito consenso dell'autore e della redazione di Mrwebmaster.it.

© Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Stampa :: Torna alla Home