Securizare formular fara captcha
În mod sigur navigând pe net, la un moment dat a trebuit să completezi un formular cu oarece date. Şi ca să dovedeşti că eşti uman (cel puţin aparent…) un mic câmp trebuia completat cu nişte litere sau cifre schingiuite şi greu lizibile, dintr-un desen asociat formularului respectiv.
Welcome to captcha !
Dacă nu le-aţi nimerit, ghinion, mai incearcă o dată, cu eventualele recompletări de date.
Daca erau prea încâlcite, poţi cere alt set, în speranţa că urmatorul va fi mai lizibil. Şi până la urmă după un pic de nervi, tot ai fi reuşit să faci submit la acel formular.
Intrebarea este câţi din potenţialii clienţi au avut răbdarea să treacă peste acest pas enervant ?
Care nici măcar nu e chiar aşa sigur precum pare…
Deci problema se pune aşa:
Am un formular in pagină web, cu un target, action şi metodă definită, şi vreau să impiedic un spammer (bot spammer, de regulă) să-mi citească formularul, să-mi facă submit pe scriptul action asociat, şi să-mi umple baza de date cu răspunsuri fictive, spam, reclame sau mai rău, cu cod maliţios javascript…
Un răspuns ar fi tehnologia captcha, cu inconvenientele expuse mai sus. Dar există o metoda mai buna. Se bazează pe trei lucruri:
formularul în sine este un obiect aparţinator DOM (Document Object Model-ului) paginii respective, cu atribute, proprietati etc…
prin urmare pot defini aceste proprietati în mod dinamic.
majoritatea bot-ilor de spam nu cunosc javascript, sau nu reuşesc să descifreze cod javascript, mai ales daca e obfuscat.
Prin urmare, definiţi un formular minimal, cu un id şi name asociat, cu câmpurile dorite definite, şi introduceţi un buton submit, cu o funcţie asociată javascript, prin care atribuiţi în mod dinamic targetul formularului, metoda şi scriptul action asociat. Dupa care, tot din funcţia respectivă apelaţi metoda submit a formularului. Dacă folositi jQuery lucrurile se simplifică şi mai mult. Mutaţi această funcţie intr-un fisier .js separat şi dacă sunteţi un pic paranoic obfuscati codul folosind unul din obfuscatoarele javascript free de pe net.
Şi gata. Problemă rezolvată. Fara captcha, fără nervi.
Noi ne-am confruntat cu coduri captcha sparte şi cu baza de date plină de spam. După aplicarea acestei metode problemele s-au rezolvat.
Acum trebuiesc avute in vedere urmatoarele:
Metoda e viabilă împotriva roboţilor care caută în mod automat vulnerabilităţi în formulare. Dacă un hacker uman işi pune mintea, o poate rezolva relativ uşor, indiferent de cât de obfuscat ar fi codul javascript. Prin urmare respectaţi cu stricteţe regulile de securitate şi validările care sunt obligatorii în orice script ce primeşte înspre prelucrare date de la utilizator.
Dat fiind totuşi că dificultatea ‘spargerii’ codului e mare, există o bună şansa ca să fi lăsat în pace în speranţa găsirii unei ‘victime’ mai uşor de rezolvat.