ASPcenter.net

1 marzo 2010

Simulare il codice di sicurezza CAPTCHA in ASP

Archiviato in: ASP e Sicurezza — Tag:, , , , — lukeonweb @ 14:57

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 GD ad hoc che non tutti sanno utilizzare e non tutti i servizi di Hosting, anche se supportano ASP, hanno a disposizione, trattandosi per lo più di componenti a pagamento.


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.

Nessun commento »

Non c'è ancora nessun commento.

RSS feed dei commenti a questo articolo. TrackBack URL

Lascia un commento

ASPcenter.net è il blog italiano su ASP, ASP.Net, VB.Net, C# e Visual Studio - Funziona con WordPress