DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Zastita klasicne PHP contact forme od spama? (http://www.devprotalk.com/showthread.php?t=1742)

oliver78 01. 11. 2006. 23:45

Citat:

Originalno napisao dinke
Resenje koje ce odbiti dobar deo spamera je generisanje nekog hidden field-a sa nekom random vrednoscu unutar forme, i smestanje istog u sesiju (kako bi ga proverio pre slanja) + stopwatch, tj. brojis koliko je sekduni proslo od prvog ucitavanja strane.

Jel moze malko opsirnije?
Jel i ovde ciljas na JS?

dinke 02. 11. 2006. 00:07

Ne, ilija je objasnio JS varijantu, ovo je sve server side (php only :).

Dakle, php generise neki random string i generise ga unutar forme kao vrednost hidden polja tipa:

Kôd:

<input type="hidden" name="protect_form" value="2f2hfgvjgj" />
a takodje ga ubaci u sesiju kako bi mogao posle da imas sa cime da poredis ($_POST['protect_form'] sa $_SESSION['protect_form']). Takodje, slicno mozes sa vremenom, generises neki timestamp prilikom ucitavanja forme, pa posle proveravas koliko je sec proslo.

Inace, ovaj feature je breakable, ali mnogo toga treba odraditi od strane spamera:
- treba da ucita prvo formu
- parsuje to polje sa reg_expom da bi iscupao taj hidden field
- posalje post request, uz snimanje cookia (posto su uz ceo proces ukljucene sesije :)

Dakle, otarasio si se 90% spamera :)

ivanhoe 02. 11. 2006. 00:47

prednost ovog sto Dinke predlaze je sto ce raditi u svakom browseru... S druge strane javascript je bolja zastita jer malo pametniji spajder ce pokupiti sva polja i poslati ih zajedno sa cookiejem.. to nije uopste toliko komplikovano posto LWP i slicne biblioteke vecinu posla urade same..

Dobra fora za zaustavljanje spajdera je da se na ovo Dinketovo doda jedna onSubmit javascript funkcija koji ce uraditi nesto sa tom vrednosti u hidden polju, tipa da je pomnozi sa 2 ili tako nesto, to ce malo koji spajder moci da prevazidje, ali opet to zahteva podrsku za JS...

oliver78 02. 11. 2006. 22:33

Citat:

Originalno napisao dinke
Dakle, otarasio si se 90% spamera :)

Hvala, sada je jasnije.

Blood 02. 11. 2006. 23:54

A mozes i da stavis ovako nesto, i onda si se otarasio svih onih koji ne znaju da racunaju...
Kôd:

function captcha() {
    $numbers = array("zero", "one", "two", "three",  "four", "five",  "six", "seven", "eight", "nine");
    $rand = array_rand($numbers,2);
    $result=$rand[0]+$rand[1];
    $question = "<b>".$numbers[$rand[0]]."</b> plus <b>".$numbers[$rand[1]]."</b>";
    $out .= '<label for="captcha">Please enter the result into the box below:(Answer in numbers only)<br /> '.$question.' equals </label> <input type="text" name="captcha" id="captcha">'."\n";
                $out .= '<div><input type="hidden" NAME="result" VALUE="'.$result.'"><br /></div>';
    return $out;
}

Ako ti treba neko jednostvano resenje, ovo je super, ako ti treba nesto komplikovanije...dinketov predlog je odlican...


Vreme je GMT +2. Trenutno vreme je 16:04.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.