Pagine dinamiche: i rischi del codice

di Sonia Ferretti

Pubblicato 17 Novembre 2008
Aggiornato 12 Febbraio 2018 20:48

Le pagine web dinamiche offrono alle aziende la possibilità  di far visualizzare dei cataloghi commerciali in modo completamente interattivo per l’utente.

Poiché alla base di questo servizio vi è un database – sia esso di tipo gratuito o meno – è chiaro che la regola numero uno in questi casi è “proteggere il database“.
Chiaro ma a volte sottovalutato dall’utente programmatore, che spesso non pensa a quanto gli internauti possano essere “maliziosi”.
Un programmatore mi raccontava qualche tempo fa di un intruso che si divertiva a sostituire le immagini agli artt. sul suo server accedendo con le credenziali di un altro utente.
Con le ovvie conseguenze commerciali del caso: scarsa credibilità  del catalogo e quindi scarsa credibilità  dell’azienda!

Allo scopo di preservarci da “scherzi” – quando non veri sabotaggi – possiamo cercare almeno di rendere la vita difficile agli intrusi.
L’errore più comune è quello di non effettuare controlli sulle stringhe inserite nelle form.

Cosa che in una pagina di login si può ovviare ad es. così:

Do while NOT objRs.EOF

If objRs(“UserID”) = Request.Form(“user”) Then
VerifyMember = True
End If
If objRs(“Password”)
= Request.Form(“pass”) Then
VerifyPass = True
End If
objRs.Movenext
Loop

In pratica scorriamo tutto il recordset restituito in cerca della corrispondenza tra la stringa nel database e la stringa inserita nell'utente e nella password.

Un'operazione di sicurezza prevede anche, ad esempio, che l'utente che si collega dalle pagine web deve essere limitato magari alla sola selezione dei record quindi solo operazioni di select.
Magari creandone un altro per le operazioni di insert, mentre drop e alter rappresentano operazioni abbastanza pericolose.

Inoltre dobbiamo controllare che l’utente effettui un certo percorso all’interno del sito, dopo il login, e magari monitorarlo attraverso il “Request.Cookies”.

Cerchiamo inoltre di interpretare quel che viene scritto nei campi a disposizione dell'utente. Parole come insert, drop, or, = non dovrebbero essere contemplate!

Fatto questo, dobbiamo anche ricordarci di controllare i valori passati tramite URL.
Preferibilmente, passiamo le variabili nascoste ed evitiamo di pubblicare tutto sull’url. Controllare inoltre il nome della pagina di provenienza, il nome della form ecc.