Navigatie

Methoden om email spam te voorkomen

Het plaatsen van een emailadres of formulier op een website is tegenwoordig niet meer zonder gevolgen. Het aantal ongewenste spamberichten groeit met de dag. Spam software doorzoeken websites om emailadressen en formulieren te kunnen misbruiken voor spam doeleinden. Aan ons de taak om hier iets aan te doen.

Zoals website beheerders en scripters steeds nieuwe methoden bedenken om spam tegen te houden, zullen de makers van spam software deze methoden op de voet volgen om hun software er op aan te passen. Het gaat dan ook om die ene methode welke voor de personen die zich schuldig maken aan spam praktijken niet rendabel is om hun spam bot er op af te stemmen.

Naar aanleiding van een methode die ik geïmplementeerd heb in het Blue2 CMS, heb ik het Internet afgezocht naar artikelen en berichten over uiteenlopende manieren die tot nu toe toegepast worden. Hieronder een opsomming van de verschillende anti-spam methoden.
 

Emailadressen behoeden voor ongewenste emailberichten

Afbeeldingen in plaats van een emailadres
De meest bekende methode is waarschijnlijk het gebruik van een afbeelding waarin het emailadres is opgenomen. Het voordeel is dat het voor spam bots vrij moeilijk is om een emailadres van een website af te halen, dit zal dan ook een van de meer waterdichte anti email spam methodes zijn. Nadelen: niet toegankelijk, niet gebruiksvriendelijk en mits er niet enige vorm van schaduw in de afbeelding is aangebracht, zijn bots tegenwoordig alweer in staat om een emailadres uit een afbeelding te lezen. Voor personen die met een alternatieve browser surfen, zoals een screenreader of een mobiele applicatie, kan het onmogelijk zijn om je contactgegevens te achterhalen. Daarnaast is het emailadres niet te kopieren om weer eenvoudig in een email client zoals Outlook of Thunderbird te plakken.

Verbergen met entiteiten
Door een emailadres of zelfs een gehele mailto-email link om te zetten in entiteiten, zal het emailadres niet meer letterlijk in de broncode staan. Ter voorbeeld het emailadres info op domain punt com in ASCII-code:
info op domain punt com

Een groot hoeveelheid spam bots zijn nog niet in staat om ASCII te ontcijferen. Door het deel dat dit wel kan, kunnen emailadressen doorgespeeld worden aan andere partijen met alsnog ongewenste emailberichten dat exponentieel toe kan nemen.
Twee links waar emailadressen omgezet kunnen worden naar ASCII-code:

 

Emailadressen leesbaar herschrijven
Een veel en laagdrempelige methode die toegepast wordt, is gewoonweg het herschrijven van emailadressen. Door bijvoorbeeld het apestaartje of de punt te vervangen door letterlijke woorden of afkortingen, zullen de 1e graads spam bots niet meer in staat zijn emailadressen uit websites te filteren.
Juist omdat dit massaal wordt gedaan, is spam software hier op aangepast. Het herschrijven van een emailadres naar bijvoorbeeld info [@] domain [.] com of info [at] domain [dot] com is niet meer voldoende om te voorkomen dat het op wordt gepikt door email spam bots.

Andere personen laten bewust de domeinextensie, dus het .com-gedeelte, achterwege of passen trefwoorden toe binnen het domeinnaam (zoals info op antispam.domain punt com) in de hoop dat bezoekers zullen concluderen dat het trefwoord verwijderd moet worden alvorens het te gebruiken. Dit soort methodes kan dus verwarring veroorzaken.

Herschrijven met behulp van javascript
De hulp van javascript wordt steeds meer ingeroepen om geëncrypte emailadressen op het scherm te tonen, opdat deze leesbaar en bruikbaar zijn voor bezoekers, maar niet in de html code teruggevonden kunnen worden.
Het voordeel is dat dit, afhankelijk van de complexiteit van de javascriptcode, erg effectief kan zijn. Het is echter geen toegankelijke methode en kost wat werk om dit toe te passen.
Websites die een javascript genereren op basis van je emailadres:

 

 

Emailadressen achter een verificatie scherm plaatsen
Een wellicht nieuwere methode. Je vult je emailadres in bij een online dienst, welke een pagina retourneert. De url naar deze pagina kun je gebruiken voor op het web. Bezoekers dienen de url in te vullen en een vraag te beantwoorden om achter het emailadres te komen.
Waarschijnlijk vrij effectief, echter voornamelijk praktisch op fora. In het geval van een website van een organisatie wil je geen drempels creëeren om bezoekers ervan te weerhouden contact met je op te nemen. Naast dat het niet toegankelijk is, is het dus ook geen gebruiksvriendelijke anti email spam methode.

Indien je gebruik wenst te maken van deze dienst of gewoonweg nieuwsgierig bent:

 

 

Publiceer geen emailadressen
Een andere manier om geen doelwit te worden van directe email spam is simpel: publiceer geen emailadressen op websites, gebruik een contactformulier. Dit kan effectief zijn, echter kan ook deze methode een drempel vormen om een emailbericht te sturen. Sommige bezoekers zijn gehecht aan -bijvoorbeeld het grote scherm in- hun eigen email client of wensen bepaalde mogelijkheden.

Contactformulieren zijn echter helaas niet dè manier om spam te voorkomen. Ook contactformulieren zijn in deze tijden het doelwit van instanties die zich schuldig maken aan spam praktijken...

 

 

 

Webformulier beschermen voor spam doeleinden

CAPTCHA
Captcha is een afkorting en staat voor "Completely Automated Public Turingtest to tell Computers and Humans Apart". Kortom, CAPTCHA is een hulpmiddel dat computers van mensen onderscheidt. CAPTCHA kan geimplementeerd worden in een formulier, welke op zijn beurt een afbeelding laat zien waarin letters verwerkt zijn. De oplossing wordt opgeslagen in een sessie en wordt na versturen vergeleken met de ingevoerde waarde. Indien gelijk, dan kan geconcludeerd worden dat het formulier verstuurd is door een persoon.
Nadelen zijn dat dit niet toegankelijk is, alhoewel de letters al voorgelezen kunnen worden voor bijvoorbeeld screanreaders, en dat dit een extra drempel kan vormen. Daarnaast is het voor een maker van spam software natuurlijk een uitdaging geworden om bots te programmeren die deze afbeeldingen ook af kunnen lezen, met als gevolg dat de tekst dat in de afbeelding getoond wordt, minder regelmatig dient te zijn en dus minder leesbaar wordt.

Zet een rekensom of een vraag in
Ook andere middelen waarbij gebruikers een extra veld in dienen te vullen, worden ingezet. Zo kan er een simpele optelsom gepresenteerd worden, waarbij de rekensom achter de schermen willekeurig bepaald kan worden en het antwoord achter de schermen meegestuurd kan worden (bijvoorbeeld weer in een sessie, in ieder geval niet in een verborgen invoerveld omdat spam bots ook dit uit kunnen lezen).

Of stel gewoonweg een simpele vraag als "Wat is de 6e maand van het jaar?". Dit zijn beide toegankelijke methoden, maar ook deze vormen een kleine drempel. Daarnaast vergt het programmeer of script kennis om deze methoden te implementeren in een formulier of website.

Filter de invoer op bepaalde woorden
Het is uiteraard bekend dat spam berichten bepaalde woorden bevat, voornamelijk gerelateerd aan de seksindustrie. Op deze woorden kan gefilterd worden om te voorkomen dat spammerige berichten of ongewenst mail in je inbox of in de reacties op een bericht terecht komen.
Deze methode is echter weer niet waterdicht. Personen die hun beklag willen doen over bepaalde producten waarop gefilterd wordt, zullen hun reactie nooit zien verschijnen. Bovendien worden spam berichten alweer op zo een manier opgezet dat de betreffende te censureren woorden op een andere manier worden geschreven opdat het bericht er niet uit gefilterd wordt.

Webservices tegen spam
Onlangs kwam ik een voor mij nieuwe methode tegen om spam bij formulieren te filteren. Deze methode betreft een service (genaamd Mollom) welke berichten controleert en enkel niet spammerige berichten doorlaat. Indien de service niet weet of een bericht spam betreft, krijgt de gebruiker een tussenscherm waar CAPTCHA wordt toegepast.
Andere vergelijkbare externe diensten:

 

 

 

 

 

Aldus, er is geen toegankelijke, gebruiksvriendelijke en waterdichte methode ?

Voor zover ik heb kunnen concluderen naar aanleiding van de artikelen en berichten die ik gelezen heb, heb ik geen methode gevonden die aan mijn drie eisen voldoen. Om die reden heb ik mijn hersenen laten kraken en ben ik tot twee methoden gekomen, een om direct email spam te voorkomen en een om ongewenste berichten via contactformulieren te voorkomen. Beide vergen echter kennis van php en html om het toe te kunnen passen.

 

 

 

Email spam verhinderen

Om emailadressen zonder drempels te publiceren, kan een reguliere expressie toegepast worden welke een emailadres herschrijft en encrypt. Middels javascript kan er een leesbare en kopieerbare versie van gemaakt worden.

 

 

 

 

Comment spam verhinderen

In het geval van een contactformulier kan een tekstveld ingezet worden, welke met behulp van externe CSS of javascript onzichtbaar wordt gemaakt voor bezoekers. Spam bots lezen namelijk de html en zien dit veld alsnog. Indien je het veld ook nog eens een aantrekkelijke naam als www of website geeft en bovenaan het formulier plaatst, zal een email bot zo een veld maar al te graag invullen.

In de verwerkende code controleer je of het veld leeg is. Wanneer het veld niet leeg is, geef je de melding dat het de browser van de gebruiker geen CSS ondersteunt en hij het eerste veld leeg dient te maken. Spam software zullen na het versturen vaak geen moeite meer doen om de feedback te interpreteren. Daarbij komt dat de meeste spam bots waarschijnlijk engels georienteerd is.

Uiteindelijk blijft het voorkomen van email spam natuurlijk een race tegen de ontwikkelaars van spam software. Naar aanleiding van nieuwe geintroduceerde methoden zullen spam ontwikkelaars hun spam bots verbeteren en aanpassen op de veranderingen binnen de anti spam wereld.
Een waterdichte methode welke tevens gebruiksvriendelijk blijft, zal er naar mijn mening en ervaring dan ook niet snel zijn.
Denk jij toch die ene methode gezien te hebben of zelf ontwikkeld te hebben, dan ben je uiteraard vrij dit met de rest van de webontikkelaars en internetgebruikers te delen.

 

 

2 reacties

vrijdag 28 november 2008 om 14:19
door Ronald Menges(ronald op ronaldmenges punt nl)

Leuk artikel Erwin! Interesant en vooral goed idee om een hidden field te gebruiken bij een formulier, alleen is er wel een probleem.

Ik gebruikte namelijk de Tab toets om deze reactie in te vullen en kwam hierdoor toch in het hidden veld, waar ik begon te typen. Toen ik dat merkte deed ik nog en Tab en kwam toen in het goede veld, maar kon toen mijn reactie dus niet meer versturen!

Groet Ronald

vrijdag 28 november 2008 om 16:48
door Erwin

Hallo Ronald,

Ik ben daar zelf inderdaad ook tegenaan gelopen, zodra ik wat meer tijd heb ga ik dan ook de tabindex-attribuut los laten op de invoervelden om dat probleem te voorkomen.

Erwin