Il captcha è attualmente uno dei modi più comuni per proteggere i formati liberi. È stato originariamente creato non per proteggere la sicurezza dei dati, ma per proteggere dallo spam e per riconoscere che è un umano.
Tuttavia, è generato dalla macchina, quindi non è sempre perfetto, ma il tasso di successo di un test captcha è da qualche parte intorno al 99% e solo l'1% delle immagini può essere decifrato da un robot spam ben fatto.
Ci sono più opzioni, per esempio io uso questa soluzione:
Se il test captcha può essere risolto, l'utente è probabilmente umano. Tuttavia, è bene pensare agli utenti che non possono risolvere il compito, specialmente gli utenti non vedenti. È una buona soluzione per combinare più test possibili (specialmente il prefetching vocale). Tuttavia, il riconoscimento vocale da parte di una macchina è attualmente molto più efficiente della lettura da un'immagine. Pertanto, questa soluzione non è sempre ideale.
Spesso è sufficiente generare un'immagine vuota di certe dimensioni e inserirvi alcuni caratteri in modo leggibile senza ulteriori modifiche. Seriamente! La maggior parte dei bot di spam sono stupidi e non possono attaccare moduli generici con questo tipo di protezione, anche se è un testo perfettamente leggibile che un OCR migliore può trascrivere perfettamente.
L'immagine risultante può assomigliare a questa:
<img src="captcha.php" alt="ukázková captcha">
Prova ad aggiornare la pagina alcune volte e vedrai che il codice cambia casualmente ogni volta. A scopo dimostrativo, è appena generato senza salvare, quindi sarà rimosso immediatamente dopo averlo caricato.
Ho risolto il codice sorgente usando la libreria PHPGD, che è disponibile praticamente su ogni installazione PHP e hosting:
Header("Tipo di contenuto: image/png");$obr = ImageCreate(100, 35);$pozadi = ImageColorAllocate ($obr, 219, 28, 49); //definizione del colore di sfondo$bila = ImageColorAllocate ($obr, 255, 255, 255); //definizione del colore bianco per il testo$styl = array ($pozadi);ImageSetStyle ($obr, $styl);$nahodne_cislo = rand(11111,99999); //disegnare un numero casuale di 5 caratteriimagestring($obr, 5, 25, 10, $nahodne_cislo, $bila); /funzione per disegnare il testo (in questo caso un numero)ImagePNG($obr); //generazione dell'immagine in memoria e renderingImageDestroy($obr); //cancellare l'immagine dalla memoria (non sarà più necessaria, perché è stata generata una volta)
Il rendering dell'immagine è poi solo una questione di HTML:
<img src="captcha.php">
Notate che questo script non è funzionale da solo senza ulteriori modifiche. Serve solo come dimostrazione per generare una semplice immagine.
I test Captcha sono abbastanza affidabili, ma fastidiosi e richiedono tempo. A volte non sono leggibili, quindi è bello dare all'utente la possibilità di caricare un'immagine diversa usando il javascript in modo che l'intera pagina non debba essere ricaricata e tutto debba essere riempito di nuovo.
Ricorda: Ciò che è un compito banale per un umano potrebbe non essere mai una soluzione realizzabile per una macchina. Ecco perché anche questo primitivo captcha con testo perfettamente leggibile può proteggere contro più della metà dello spam.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | it