Il codice di sicurezza CAPTCHA (acronimo di Completely Automated Public Turing test to tell Computers and Humans Apart, ovvero test di Turing pubblico e completamente automatico per distinguere computer e umani) in ASP può essere simulato semplicemente, ma è piuttosto difficile realizzarlo attraverso l’utilizzo di un’immagine.
Il motivo è che ASP non può, nativamente, interagire con i file grafici ma necessita di librerie ad hoc che non tutti sanno utilizzare e, soprattutto, che difficilmente sono reperibili nei comnuni servizi di Hosting.
La simulazione del codice CAPTCHA attraverso una stringa di testo non è sicura come attraverso l’utilizzo delle immagini, ma… meglio che nulla, non vi pare?
Passiamo all’esempio pratico.
Abbiamo bisogno di due file per il nostro esperimento: il primo è quello che presenta il modulo HTML da compilare, compreso il codice CAPTCHA, che chiameremo modulo.asp; il secondo è quello che esegue i dati del modulo, inviandoli per email o registrandoli nel database… ora non ci interessa.
Iniziamo dal codice del file modulo.asp:
<%@Language = VBScript%> <% Function CAPTCHA() Dim caratteri, codice caratteri = "" caratteri = caratteri & "0123456789" caratteri = caratteri & "abcdefghijklmnopqrstuvwxyz" caratteri = caratteri & "ABCDEFGHIJKLMNOPQRSTUVWXYZ" Randomize() Do Until Len(codice) = 7 carattere = Int((Len(caratteri) * Rnd())) codice = codice & Mid(caratteri, carattere, 1) Loop CAPTCHA = codice End Function Session("captcha") = CAPTCHA() %> <html> <body> <form method="post" action="esegui.asp"> <b>Codice di sucirezza da copiare</b><br><br> <%=Session("captcha")%> <input type="text" name="captcha"> <input type="submit" value="Conferma"> </form> </body> </html>
Nell’intestazione della pagina generiamo una stringa casuale attraverso una funzione che non casualmente chiamiamo CAPTCHA().
Registriamo poi il suo valore in una variabile di sessione per trasportarlo nella pagina di esecuzione.
In fine, nel corpo della pagina, mettiamo a disposizione dell’utente il modulo, prendendo per il nostro esempio in considerazione solo il campo relativo al codice CAPTCHA.
Passiamo adesso al codice del file esegui.asp:
<%@Language = VBScript%> <% Dim captcha captcha = Request.Form("captcha") %> <html> <body> <% If Len(captcha) < 7 Or captcha <> Session("captcha") Then Response.Write "Codice di controllo errato :-(" Else Response.Write "Operazione eseguida con successo :-)" End If %> </body> </html>
Recuperiamo il valore della casella di testo in cui inseriamo il codice di sicurezza e lo confrontiamo con la variabile di sessione creata precedentemente, offrendo un risultato positivo o negativo a seconda del fatto che la condizione venga soddisfatta o meno.<!– –>