01februari

Reacties weer geopend

Eind vorig jaar schreef ik in dit blogartikel dat ik door de dagelijkse hoeveelheid blogspam helaas genoodzaakt was om de reacties na 14 dagen automatisch te sluiten.

Kennelijk is het blogging-platform dat ik gebruik (Blogengine.NET) inmiddels zodanig populair geworden dat het voor spammers de moeite waard is gebleken om robots te programmeren die de ingebouwde anti-spambeveiliging omzeilen.

Oplossing?

De afgelopen tijd heb ik nagedacht over een eenvoudig te realiseren oplossing. En eigenlijk werd ik op het spoor gezet door de pagina toetsen van webrichtlijnen.nl die ik tegenkwam tijdens het schrijven van het Handboek Usability. Op deze pagina wordt onder elk formulier een simpele anti-spamvraag getoond. Zonder dat dit veld is ingevuld, wordt het formulier niet verwerkt.

antiSpam

Kennelijk is dit voor webrichtlijnen.nl voldoende om spambots te misleiden, misschien moet zo nu en dan even de ‘opgave’ van 1 + 1 worden gewijzigd in iets anders.

Eens kijken of dat ook op deze website gaat werken. Ik heb handmatig een simpel tekstveld en een paar regels JavaScript en C# toegevoegd aan de reactiepagina. Zie het voorbeeld onderaan dit bericht.

Om het wat moelijker te maken, heb ik wel de opgave veel ingewikkelder gemaakt dan 1 + 1. ;-)

Ook de reacties voor eerdere artikelen zijn weer geopend, ik wacht even af hoe het gaat. Mocht ik binnen afzienbare tijd weer ladingen spam binnenkrijgen, dan is mijn oplossing kennelijk niet geavanceerd genoeg en moet ik naar iets anders omkijken.

Liever geen Captcha

Persoonlijk heb ik echter een hekel aan die standaard Captcha’s waarbij je onleesbare woorden moet overtypen of andere rare dingen moet doen om je reactie geplaatst te krijgen (of zelfs maar een zoekvraag op een forum uit te voeren). Dus als het even kan wil ik dit soort componenten in mijn blog vermijden.

captcha

Test mijn formulier. Laat een reactie achter, waarin je vertelt wat je er van vindt en of je misschien een betere oplossing weet.

Peter Kassenaar
-- 01 februari 2010

Reacties

01-02-2010 02:39 #

de rekensom test wel mijn capaciteiten maar ik denk dat het wel werkt Smile
ben zelf ook niet zo happig op captcha's omdat deze soms net onleesbaar genoeg zijn om het mis te typen. wat ik op een forum gezien heb van atak is dat ze simpelweg vragen waar staat atak, en als je dan niet juist antwoord dan kun je geen account aanmaken Smile

Pim ter Doest Netherlands

01-02-2010 03:06 #

@Pim - ja, en er zijn nog tal van andere opties, zoals 'welk dier zegt BOE', 'Een tafel en een ....?' (toegegeven, die is al wat lastiger :-D ).

Het enige nadeel is dat ik voor aanpassingen van deze 'poor man's Captcha' altijd even in de code moet duiken. Maar dat houdt de spambots dan ook weer op afstand denk ik, omdat er geen geautomatiseerde wijze is om het antwoord te achterhalen.

Ter info: voorlopig werkt het. Het is al 4 uur online, en nog niet een spambericht binnengekregen. En dat was vroeger wel anders...

Peter Netherlands

01-02-2010 03:07 #

OEPS! Was ik bij mijn vorige reply nota bene zelf vergeten om de rekensom te beantwoorden! En ik maar afvragen waarom het commentaar niet opgeslagen wordt.

Duhh....

Peter Netherlands

01-02-2010 10:26 #

Moeilijke vraag hoor, voor rekenwonders. Mooie oplossing.

Elli Netherlands

01-02-2010 10:29 #

Tijd van reacties klopt niet, ws DE 4 uur er tussenuit?

Elli Netherlands

02-02-2010 08:58 #

@Elli - mijn webserver staat in Canada. Dat is een andere tijdzone, vandaar de tijdsverschillen.

Ik kan in de blog-software wel corrigeren voor tijdzone, maar ik heb hem nu op 'Auto Detect'  staan. Dat lijkt niet helemaal goed te gaan, derhalve. Ik zal er nog eens naar kijken.

peter Netherlands

10-02-2010 06:54 #

Wat ook goed werkt: de vraag "Ben je een spammer? (nee invullen) [____]" (op de server checken of 'nee' ingevuld is), dat veld in laten vullen door JavaScript, het veld en het label verbergen en de gebruiker niet lastig vallen met dit geneuzel ;)

Krijn Hoetmer Netherlands

06-04-2010 12:40 #

Inmiddels zijn we twee maanden verder. Heb je nu al wel spam binnen gekregen? Of staat de teller nog steeds op 0, zoals je begin februari twitterde?
Toepassing van deze oplossing op de webrichtlijnen website is tot dusverre erg effectief gebleken, de anti-spambotvraag hebben we al die tijd niet hoeven veranderen.

Raph de Rooij Netherlands

06-04-2010 12:57 #

@Raph de Rooij - nee, dit eenvoudig formuliertje werkt verbluffend goed. In totaal heb ik misschien nog vier of vijf spam-reacties gehad, maar dat valt natuurlijk in het niet bij de honderden robot-reacties uit de eerdere maanden.

Voorlopig laat ik het even zo!

peter Netherlands

26-01-2011 10:15 #

Wat voor mij erg goed werkt (maar zeker niet fool-proof of waterdicht is!) is het volgende:

In mijn formuliertjes neem ik een tekstvak (dus géén input type='hidden' maar een input type='text') op die ik vervolgens met CSS verberg (display:none).

Je krijgt dan iets als volgt (even dit formulier als uitgangspunt gebruikt):

HTML:

<div class="commentForm">
    <p id="addcomment">Reactie plaatsen</p>

    <label for="name">Naam*</label>
    <input name="name" id="name" value="" type="text">

    <label for="email">E-mail*</label>
    <input name="email" value="" id="email" type="text">

    <label for="comment">Reactie</label>
    <textarea name="comment" rows="10" cols="50" id="comment"></textarea>

    <label id="lsc" for="sc">Leeg laten a.u.b!</label>
    <input name="sc" value="" id="sc" type="text">
</div>

CSS:

#sc, #lsc { display:none; }

Vervolgens controleer je of er tekst in de POST value van sc (spam-catch) zit. Is dat het geval dan kun je een aantal acties kiezen;
*) Je gooit het bericht in een (handmatige) moderatiequeue
*) of je stuurt 't door naar 1 van de vele anti-spam services voor een spam/ham check
*) Je negeert het bericht helemaal
*) ...verzin een eigen creatieve actie Smile

In mijn geval (maar dan gaat 't om wat kleine gastenboekjes op persoonlijke websites) deel ik zelfs volautomatisch een IP ban uit. Dit is wel wat rigoreus maar in mijn geval verdedigbaar gezien het publiek van de betreffende sites (welke allemaal met een browser met CSS ondersteuning gebruik zullen maken van de site).

Het gros van de spambots zal domweg alle inputs van tekst voorzien, een enkele bot is slim genoeg om input type='hidden' met rust te laten. Voordeel van deze oplossing is dat er geen JS afhankelijkheid is en je server-side in 99% van de gevallen al meteen de spambots eruit pikt.

Nogmaals: dit is zeker niet waterdicht;
*) Er zullen bots zijn die wat slimmer zijn en dit (met CSS verborgen) tekstvak niet zullen vullen
*) Er zullen altijd slimmerikken (de so-called "hackers" Tong ) zijn die toch iets invullen in het tekstvak (al is het maar om te zien wat er gebeurt).

Het is wel van belang om het betreffende tekstvak van een "niet invullen" of iets dergelijks label te voorzien voor mensen die om welke reden dan ook het tekstvak onverhoopt toch te zien krijgen. Ik heb het niet getest, maar het lijkt me verstandig geen labels als "spamcatch" of "ben je een spambot" te gebruiken; een beetje bot zal daar ook met een boogje omheen lopen lijkt me.

In mijn ervaring werkt het, ook op de wat grotere sites, wel goed om een overgroot deel van de spambots er uit te pikken. Ik heb, tot op heden, nog géén, nul dus, false positives gehad en een stuk of 2.500 spam berichten (in totaal, over verschillende sites) eruit gepikt. Wel heb ik een enkele bot gehad die er door heen kwam; het totale aantal durf ik niet exact te noemen maar het is waarschijnlijk op 2 handen te tellen.

RobIII Netherlands

26-01-2011 10:19 #

^ Oh, en nu vergeet ik nog erbij te vermelden dat het grootste voordeel van 'mijn methode' is dat je gebruikers niet lastig hoeft te vallen met captcha's, rekensommetjes of andere 'anti bot' maatregelen (althans: niet zichtbaar). Gebruikers worden niet geconfronteerd met zaken die ze, in feite, meteen bestempelen als "schuldig tot het tegendeel bewezen is".
Helaas is de trieste stand van zaken anno 2011 dat het gros van de surfers al wel gewend is aan Captcha's en andere poeha.

RobIII Netherlands

26-01-2011 10:24 #

@RobIII - Bedankt voor je uitvoerige toelichting. Ik zal deze optie eens testen.

Het enige 'nadeel' dat ik zo snel kan zien, is dat je hiervoor moet inbreken in de code van je CMS en dat dit bij toekomstige upgrades voor problemen kan zorgen. Maar voor standalone-websites lijkt dit een elegante oplossing die ook het probleem aanpakt dat bots rechtstreeks op een endpoint-adres spammen en het hele webformulier daarbij passeren.

Nogmaals dank,

Peter Netherlands

26-01-2011 10:31 #

Het enige 'nadeel' dat ik zo snel kan zien, is dat je hiervoor moet inbreken in de code van je CMS en dat dit bij toekomstige upgrades voor problemen kan zorgen.

Ik doe niet aan CMS'en Tong

En graag gedaan Smile

RobIII Netherlands

Reacties zijn gesloten