Wat ziet een spam-bot?
Pagina: « vorige 1 2 3 volgende »
Zo'n 200.000 records dacht ik zo uit mijn hoofd.
Als je wil mag je die wel hebben. Hoef je alleen effe een query toe te voegen om te kijken of het ip gelijk is aan het ip waarvan het word verstuurd. Een betere methode is er volgens mij niet.
En als er dan nog eentje doorslipt, dan is het even het ip adres toevoegen.
Maar vooralsnog wil ik dus een oplossing die gewoon alles tegenhoudt :-)))
Wat denk jij van de opzet die ik noemde? Dus zo'n honeypot-constructie, en dan het betreffende veld voor de 'normale' bezoeker onzichtbaar maken via Javascript?
Zo als ik al zei: ja. Spam-bots zijn tegenwoordig slim genoeg om captcha's te lezen dus om een verborgen veld over te slaan is helemaal een eitje. Je zult er misschien wel een paar mee tegenhouden, maar ze worden steeds slimmer. De 'no captcha recaptcha' zou je al een heel eind kunnen helpen.
Hmmm ... da's minder ... ik wil namelijk geen captcha op een simpel contactformulier zetten ... maar ja, als het echt niet anders kan :-(
Een honeypot constructie zou je kunnen proberen.
Ik heb het een paar jaar geleden ook gebruikt, maar dan via CSS.
Op zich werkt dat aardig, maar had al gauw door dat het soms niet goed werkte.
Volgens mij heb ik toen een @random CSS stukje met php erin gemaakt, dat werkte ook redelijk.
Dus, het veld een makkelijk bekende verschillende namen geven en die per view veranderen.
Dan is zo'n bot ook de weg kwijt.
Met javascript moet ik eerlijk zijn dat ik daar niet gebruik.
Vind het persoonlijk niet zo heel spannend om wielen uit te gaan vinden die al zijn gedaan.
Kijk anders eens naar het honeypot project. http://www.projecthoneypot.org/
>> Vind het persoonlijk niet zo heel spannend om wielen uit te gaan vinden die al zijn gedaan.
Nou, er valt weinig uit te vinden ... in plaats van dat je een veld via css op display:hidden zet, doe je datzelfde via javascript. Gevoelsmatig zou je denken dat dat lastiger is voor zo'n spambot. Of dat ook daadwerkelijk zo is ... tja ... daar vraag je me wat... :-s
Daarom gebruik ik het ook niet. :)
Met een @random veld display:hidden middels php doet eigenlijk precies het zelfde.
Mijn theorie op dat moment was dan ook, ik doe het server side, dus ik bepaal wat er gebeurd.
Zo'n bot moet wel heel slim zijn om alle randoms te onthouden die ik had aangegeven via het script.
Maar daar kwamen ze op enig moment toch ook doorheen.
In mijn theorie zou dat betekenen als zo'n bot wel javascript herkend, dan heeft het niet zoveel nut.
Ik zou me kunnnen voorstellen dat ze slimmer worden, dus ook niet meer werkt.
Dat is eigenlijk mijn argument om er niet aan te beginnen.
Vandaar dat ik voor een rigoreuze oplossing kies, en dat is bekende ip's bannen van de website, dus gewoon helemaal niet meer, het contact formulier, en gastenboek, en comments op blog items.
O ja, als je ooit een blog item hebt wat ooit echt gespamt word, dan heb ik nog een simpele oplossing: Het item opnieuw in de database zetten, dat werkt perfect.
Het lijkt er op dat als een botje een succses volle spam aktie heeft gedaan, dat hij daarop blijft doorgaan. Dus onthouden.
Ik had een item die echt iedere dag vol stond met spam in de comments
Op een gegeven moment was ik het zo beu en heb ik het item opnieuw in de database gezet op een andere plaats. Was bijvoorbeeld id 20 en verplaatst naar een nieuw id 52 ofzo. Omdat ik op datum sorteer had ik geen problemen met de volgorde en bleef alles zoals het was. En geen een spam bericht meer gezien. :)
Gewijzigd op 15/09/2016 21:30:35 door Bart V B
Wat probeerde je daarmee te bereiken dan? Wat is het nut om een random veld (bedoel je een random naam?) op hidden te zetten? Het is toch juist niet de bedoeling dat die bot ziet dat er een veld op hidden staat?
Op het moment als het is ingevuld, dan moet er niets gebeuren.
Als je nou bijvoorbeeld in je CSS E-mail, email, eMail, e.d. hidden maakt en een eigenschap hidden geeft en met php @random een veld met die veldnamen, dan creeer je het zelfde alleen breng je hem in de war.
Want het is nooit het zelfde, althans hoe groot de array in php is natuurlijk.
En idd, uitleggen is lastiger dan wat het is, ik bedoel dus @random naam. ;)
Trek nog een trappist open. :)
Je zou zoiets dan krijgen in pseudo code:
Code (php)
Gewijzigd op 15/09/2016 21:42:41 door Bart V B
.email, .EMAIL, .e_Mail, .mail { display: hidden; }
En via php geef je dan @random de class email EMAIL e_Mail of mail mee aan dat veld. Op die manier bedoel je?
Je moet de namen zo simpel en bekend mogelijk maken.
Want daar crawelen ze op.
Oké, ik snap wat je bedoelt. Alleen als je dus een spambot hebt die css "begrijpt" dan ziet die dus wel nog steeds dat je telkens dat veld op display:hidden zet, en zal die er dus niks mee doen.
Wat ik me toevallig laatst afvroeg; kun je je bezoekers niet gewoon een vraag opleggen passend bij het onderwerp van je website? Stel je hebt een website over Disney en in plaats van dat je een CAPTCHA gebruikt, stel je een vraag als "Welk dier is Donald Duck?". Natuurlijk is dit een redelijk makkelijk vraag, maar zou een spambot hier ook correct antwoord op kunnen geven?
Hij kan wel css begrijpen, maar als ik er meerderen heb dan word het toch wel leuk voor zo'n botje om het te proberen. Ik zeg dan ook het is niet water dicht. Begrijp me goed ik heb het ooit in het verleden (toen ik nog haar had) zo gedaan.
Hoe de status is van javascript en botjes in het heden is weet ik echt niet.
Nogmaals, ik beheer een website voor een club bejaarden die gewoon een mooie website willen zonder geconfronteerd te worden met oude_vandagen_kwalen_pillekes, en daarom heb ik er voor gekozen om het wat rigoreuzer aan te pakken. :)
Toevoeging op 15/09/2016 22:08:36:
>> Nogmaals, ik beheer een website voor een club bejaarden die gewoon een mooie website willen zonder geconfronteerd te worden met oude_vandagen_kwalen_pillekes
Of viagra :-)))
Toevoeging op 15/09/2016 22:09:50:
Overigens ... wat jij doet is idd rigoreus ... het nadeel vind ik dat je dan aan het klooien blijft. Je loopt als het ware achter de feiten aan. Ik snap je wel ... maar het is een beetje 'lappen' zeg maar.
Gewijzigd op 15/09/2016 22:07:55 door Ozzie PHP
Ik denk dat je inderdaad altijd wel aan het klooien blijft voor welke oplossing die je kiest.
Ik vrees dat je gelijk hebt ... naja, ik heb in ieder geval wat inspiratie opgedaan. Thanks allemaal!
Het is leuk, maar de bot herkent een verborgen veld en slaat deze over, wat voor naam deze ook heeft.
Ozzie, voor jou zou denk ik het mooiste zijn om een vraag of rekensom toe te voegen.
Zorg dan wel voor meerdere vragen of rekensommen, want als ik deze oplos en in de spam-bot-database zet werkt het niet meer. In dit geval is een willekeurige veld-naam misschien wel een toevoeging aangezien het dan lastiger wordt welk veld moet worden ingevuld, maar om te voorkomen dat de spam-bot dan de boel omdraait en denkt 'alle velden overslaan en wat overblijft is de vraag/rekensom', zou je alle veld-namen willekeurig moeten maken (niet naam49849, want dat is simpel van elkaar te scheiden, maar volledig willekeurig), maar dan zou de spam-bot altijd nog naar de volgorde van de velden kunnen kijken (er zou iets moeten zijn waardoor jij ook nog weet waarvoor het veld bedoelt is dus dat kan de spam-bot ook misbruiken).
Uiteindelijk blijft het heel lastig, want ze zijn echt niet meer zo dom als 5 jaar geleden.
Probeer het eens met een lijstje rekensommen en kijk dan eens of het aantal toevoegingen door bots afneemt. Leuk is nog om dan te loggen wanneer een formulier goed en fout gaat.
Ben benieuwd wat je er van maakt :-)
Is het misschien mogelijk om bij het betreden van bijvoorbeeld een registratie pagina een AJAX request te doen naar een pagina die een key teruggeeft die vervolgens weer met de registratie wordt meegezonden in een onzichtbaar veld? Als de key dan niet overeenkomt met de key die is meegestuurd gaat het om een spambot. Er vanuit gaande dat spambots niet weten dat er een AJAX request wordt gedaan.
De voorgaande oplossingen klinken leuk, en in 95% van de gevallen zal het ook prima werken, maar er zijn genoeg oplossingen denkbaar met headless browsers die wat je ook probeert gewoon zullen doorsteken. Ik heb ze zelf ook wel gebouwd (niet met het doel van spammen, maar het opvragen van voorraadinformatie e.d. van leveranciers die geen feed wilden leveren ivm concurrentie). Toegegeven, dit is niet heel erg zuinig in resources, dus zal de inzet beperkt zijn, maar het geeft wel aan dat je hoe dan ook handwerk zult blijven houden. Een handigere oplossing zou dan een honeypot zijn, kun je eenvoudig zelf maken en er zijn ook wel services voor.