Tutorials

Hoe ga ik spam via formulieren tegen?

Meerdere mogelijkheden om spam via formulieren tegen te gaan.

Pagina 1

Inleiding

Heel vaak zie je op PHPhulp vragen van mensen om spam op formulieren tegen te gaan. Daar wordt het vaakst een captcha genoemd, en dan stellen mensen eindeloze vragen daarover. Het werkt niet. Het lukt niet. Help.

In deze tutorial vertel ik over verschillende mogelijkheden, voor- en nadelen ervan, en de geschiktheid in verschillende formulieren met hun achterliggend systeem.
Pagina 2

Mogelijkheden

Er zijn verschillende mogelijkheden om je formulier beter te beschermen tegen spam. Hier noem ik ze, en in de verdere hoofdstukken ga ik er dieper op in.
[li]Captcha’s.[/li]
[li]Anti flood systemen.[/li]
[li]Onzichtbare velden.[/li]
[li]Reacties met bepaalde woorden blokkeren.[/li]
[li]Reacties met (veel) links blokkeren.[/li]

Per mogelijkheid zal ik aangeven voor welk soort formulier het geschikt is. Ik ga dan uit van de volgende formulieren:
[li]Contactformulier, die na het verzenden een e-mail zal sturen.[/li]
[li]Registratieformulier, die gegevens in een database insert.[/li]
[li]Reactieformulier (gastenboek, forum), die gegevens ook in een database insert.[/li]

Dan is er nog voor elk formulier de mogelijkheid:
[li]Voor wel ingelogde gebruikers.[/li]
[li]Voor niet ingelogde gebruikers.[/li]

Opmerking: Ik heb het in heel de tutorial over spambots, daarmee bedoel ik:
[li]‘Echte’ spambots, computers die geprogrammeerd zijn om te spammen.[/li]
[li]Programmatjes om acties steeds te herhalen.[/li]
[li]Simpele JavaScript o.e.d. scripts die een pagina steeds herhalen.[/li]
[li]Echte mensen, die bijvoorbeeld hun F5 knop misbruiken.[/li]
Pagina 3

Captcha’s

Captcha’s zijn kleine afbeeldingen met kleuren en/of lijnen, met daaroverheen willekeurige letters en cijfers. De gebruiker moet de letters en cijfers uit de afbeelding overtypen in een textbox, en PHP controleert of de ingevoerde gegevens kloppen. Daarnaast zijn er uitgebreidere captcha’s, met bijvoorbeeld vragen over het aantal poten dat een dier heeft, de hoofdstad van Nederland etc. Op deze captcha’s ga ik (nu even) niet in, dat wordt te uitgebreid.

Voordelen
[li]Moeilijk voor spambots.[/li]
[li]Simpel voor mensen.[/li]
[li]Simpel te integreren in een (bestaand) systeem.[/li]
[li]Oneindige mogelijkheden, de captcha is immers elke keer anders.[/li]

Nadelen
[li]Spambots kunnen tegenwoordig (simpele) captcha’s ‘lezen en begrijpen’.[/li]
[li]Wekt irritatie op bij mensen.[/li]
[li]Blinden (en in sommige gevallen ook kleurenblinden) kunnen de captcha niet lezen, hun speciale computer is immers alleen gemaakt om teksten voor te lezen.[/li]

Wel geschikt voor
[li]Contactformulier, een e-mailbox is immers erg kwetsbaar.[/li]
[li]Niet ingelogde gebruikers, de kans bestaat namelijk dat het spambots zijn.[/li]

Niet geschikt voor
[li]Ingelogde gebruikers, het gaat namelijk heel erg irriteren.[/li]
Pagina 4

Anti flood systemen

Een anti flood systeem is een tellertje, die ongemerkt bijhoudt hoe vaak per minuut een pagina opgeroepen wordt. Hij kan als je de grens overschrijdt (van bijvoorbeeld 10 pagina’s per minuut) een melding geven dat je moet wachten, zodat spambots hun tijd verdoen door te wachten. Daardoor hoop je dat ze ophouden met jouw te spammen, omdat ze het grootste deel van de tijd niks doen en wachten.

Je kan een anti flood systeem op alle pagina’s van je site zetten, maar dat is zeer ongebruiksvriendelijk. Beter is om het alleen op formulieren en/of de PHP pagina’s die de formulieren verwerken te zetten.

Voordelen
[li]Bijna onhackbaar.[/li]
[li]Simpel te integreren in een (bestaand) systeem.[/li]
[li]De gewone bezoekers merken er niets van.[/li]

Nadelen
[li]Geen.[/li]

Wel geschikt voor
[li]Alles.[/li]

Niet geschikt voor
[li]Niets.[/li]
Pagina 5

Onzichtbare velden

Wat een spambot doet, is dit:
[li]Hij opent een pagina.[/li]
[li]Hij zoekt of er een formulier is.[/li]
[li]Hij analyseert het hele formulier, met alle inputs e.d. Bij de name tags van de inputs, probeert hij een geschikte waarde te genereren. Als hij dus email, mail of eaddress ziet staan, snapt hij dat daar een e-mailadres hoort.[/li]
[li]Hij vult alle velden zo echt mogelijk in.[/li]
[li]Hij verzend het formulier.[/li]

Maar waar een spambot niet op let is of een veld onzichtbaar is. Daarom is er een heel simpel systeempje, om een spambot te herkennen. Je zet in je formulier één of meerdere inputs, met geloofwaardige namen, en maakt ze met CSS onzichtbaar. De echte bezoekers van je site zien de inputs niet, en vullen dus ook niets in. Maar de spambots zien de inputs wel, en vullen er wat in. Bij het controleren van het formulier check je simpelweg of er iets ingevuld is, zo ja, het is een spambot, die niet geholpen moet worden.

Voordelen
[li]Werkt bijna altijd.[/li]
[li]Simpel te integreren in een (bestaand) systeem.[/li]
[li]De gewone bezoekers merken er niets van.[/li]

Nadelen
[li]Geen.[/li]

Wel geschikt voor
[li]Alles.[/li]

Niet geschikt voor
[li]Niets.[/li]
Pagina 6

Reacties met bepaalde woorden blokkeren

Zoals je vaak ziet word er in spam vaak veel dezelfde termen en woorden gebruikt. Denk aan viagra, de breezah varianten ervan, en ga zo maar door. Als je bij het controleren van het formulier even checkt of die woorden toevallig voorkomen, heb je een spambot zo te pakken.

Voordelen
[li]Simpel te integreren in een (bestaand) systeem.[/li]
[li]De gewone bezoekers merken er niets van, en al zouden ze het merken, dan komt het omdat ze een ongewenste reactie posten.[/li]

Nadelen
[li]Het is veel werk om goed te analyseren welke woorden vaak gebruikt worden door spambots.[/li]

Wel geschikt voor
[li]Contactformulier, omdat er een echte tekst en niet alleen naam en e-mailadres ingevuld moet worden.[/li]
[li]Reactieformulier, omdat er een echte tekst en niet alleen naam en e-mailadres ingevuld moet worden.[/li]

Niet geschikt voor
[li]Registratieformulier, omdat zoals je in het vorige hoofdstuk hebt kunnen lezen, spambots vaak echt lijkende antwoorden geven bij inputs zoals naam en e-mailadres.[/li]
Pagina 7

Reacties met (veel) links blokkeren

Wat je ook vaak ziet, is dat spambots links posten. Dat ken je heel simpel tegengaan, door reacties met (veel) links te blokkeren.

Voordelen
[li]Simpel te integreren in een (bestaand) systeem.[/li]

Nadelen
[li]Echte bezoekers zullen geen of weinig links kunnen posten.[/li]

Wel geschikt voor
[li]Contactformulier, omdat er een echte tekst en niet alleen naam en e-mailadres ingevuld moet worden.[/li]
[li]Reactieformulier, omdat er een echte tekst en niet alleen naam en e-mailadres ingevuld moet worden.[/li]

Niet geschikt voor
[li]Registratieformulier, omdat zoals je in het vorige hoofdstuk hebt kunnen lezen, spambots vaak echt lijkende antwoorden geven bij inputs zoals naam en e-mailadres.[/li]
Pagina 8

Slot

Ik hoop dat jullie wat hebben geleerd van deze tutorial, en veel plezier ervan zullen hebben. Als je zelf niet helemaal begrijpt hoe je een script voor bijvoorbeeld een captcha maakt, moet je gewoon maar even zoeken in de scripts van PHPhulp.

Verder wil ik nog een tip geven aan de gevorderde scripter: het is handig om twee functies aan te maken, ééntje die je tussen de form tag echo’t, en dia een captcha, een onzichtbaar veld etc. neerzet, en een tweede functie alles in één keer checkt. Dat bespaart veel tijd en werk.

Reacties

0
Nog geen reacties.