Usare un CAPTCHA in ASP
Il test CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) serve ad impedire l’accesso dei cosidetti roBOT nei nostri moduli on line al fine di ridurre lo spam. La soluzione prevede di far inserire all’utente una sequenza di caratteri (e/o cifre) che appaiono in un’immagine generalmente poco riconoscibile dai software OCR.
Per inserire un controllo captcha basato su ASP Security Image Generator possiamo procedere nel seguente modo. Accertiamoci di scaricare il seguente file asp_captcha.zip contenente il file “captcha.asp” (v3.0) realizzato da Emir Tüzül, estraiamolo e pubblichiamolo sul nostro sito.
form.html
Inseriamo nella pagina del nostro FORM il seguente codice:
<img src="captcha.asp" alt="CAPTCHA Image" />
che visualizzerà un’immagine simile a questa:
ed aggiungiamo il seguente campo al FORM:
<input name="strCAPTCHA" type="text" id="strCAPTCHA" />
Sarà il campo che l’utente dovrà compilare con la stringa visualizzata nell’immagine.
action.asp
Ora passiamo a modificare il file indicato come “action” del FORM ed inseriamo questa funzione:
<% Function CheckCAPTCHA(valCAPTCHA) SessionCAPTCHA = Trim(Session("CAPTCHA")) if Len(SessionCAPTCHA) < 1 then CheckCAPTCHA = False exit function end if if LCase(CStr(SessionCAPTCHA)) = LCase(CStr(valCAPTCHA)) then CheckCAPTCHA = True else CheckCAPTCHA = False end if End Function %>
A questo punto utilizziamo il seguente controllo
<% strCAPTCHA = Trim(Request.Form("strCAPTCHA")) if CheckCAPTCHA(strCAPTCHA) = true then ' go ahead, it's a human else ' spam avoided end if %>
per distinguere le azioni da intraprendere.
Inoltre, è possibile personalizzare le immagini generate, modificando i seguenti parametri del file “captcha.asp”:
<% '#Editable consts and variables dim Bitmap(25,110) '[Height,Width] const CodeLength = 5 'Secure code length (Max:8) const CharTracking = 4 'Set the tracking between two characters const RndTopMargin = true 'Randomize top margin every character const NoiseEffect = 2 '0(none), 1(sketch), 2(random foreground lines), 3(random background lines), 4(1 + 3 - Recommed maximum NoiseLine=4) const NoiseLine = 5 'Low values make easy OCR, high values decrease readability const MinLineLength = 6 'Minimum noise line length %>