I Captcha sono sistemi di verifica usati per determinare se un'azione viene eseguita da un essere umano.
Nella forma più diffusa sono basati su una stringa di alcuni simboli (generalmente lettere e numeri), opportunamente distorti e inseriti in un'immagine (captcha testuali): la stringa può essere letta dall'uomo ma non da un robot. Il sistema viene pertanto utilizzato nelle applicazioni Web per impedire che l'invio di un modulo possa essere eseguito da un robot.
L'utilizzo dei codici Captcha è molto comune e rappresenta un importante strumento di protezione contro gli spam e gli attacchi DDos. La costruzione dell'immagine Captcha, per ovvie ragioni, deve essere fatta lato server: in questo esercizio ho creato l'immagine (abbastanza semplice ma idonea a far capire il funzionamento di un sistema Captcha) utilizzando il linguaggio PHP e facendo ricorso ad alcune funzioni della libreria Graphics Draw.
E' chiaro che un programmatore bravo ed esperto potrebbe riuscire a creare un robot in grado di elaborare l'immagine ed estrarre da essa la stringa: occorre dunque creare immagini molto complesse oppure utilizzare sistemi di verifica alternativi quali indovinelli (ad esempio il risultato di un'operazione aritmetica) o captcha grafici (ad esempio quelli utilizzati nel servizio reCAPTCHA di Google in cui all’utente viene mostrata l’immagine principale di un oggetto e gli viene chiesto di selezionare tutte le altre immagini in cui quell'oggetto è presente).
Per creare e testare l'applicazione si può utilizzare WAMP o un altro Server
La soluzione proposta, in PHP e AJAX per evitare il refresh della pagina, si compone di tre files:
1. logincaptcha.php che contiene il form HTML che consente di inserire il Nome utente, la Password e il Codice Captcha leggibile nell'immagine proposta e quindi di effettuare una richiesta Ajax a controlla.php per verificare che il codice Captcha inserito sia giusto
2. controlla.php
3. creaimmagine.php che genera un'immagine con 6 simboli che l'utente deve leggere e digitare nella casella di testo del Codice Captcha