[PHP] Automatisch records uit database verwijderen

Pagina: 1
Acties:
  • 308 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Wouter!
  • Registratie: Maart 2001
  • Laatst online: 19-09 15:03
't Volgende is het geval:

Ik heb een klein gastenboekje welke we gebruiken met 'n vriendengroep. 't Probleem is dat daar tegenwoordig erg veel spam in komt. Dat kan ik via het controlepanel van het gastenboek verwijderen en ook meteen 't IP verbannen ... maar tegenwoordig komt er zo veel spam in dat ik 't rechtstreeks uit de database gooi. Dit bracht me op het idee om gewoon een .php-file te maken met een query die alle berichten die aan een bepaalde waarde voldoen verwijdert als ik die file via de browser open. Da's opzich niet moeilijk en werkt ook wel, maar is er ook een mogelijkheid om zo'n query bijvoorbeeld ieder uur automatisch vanaf de server te laten runnen? Alle spam-berichtjes zijn namelijk qua opbouw hetzelfde, dus als 'n query maak als bijvoorbeeld (ongeveer) DELETE FROM `messages` WHERE `message` LIKE "%[href=%"; of zoiets dan ben ik er in principe al.

Uiteraard is dit allemaal symptoom-bestrijding en zal het bouwen van een nieuw gastenboek een betere optie zijn maar daar heb ik momenteel geen tijd voor. Ik zoek dus naar een eenvoudige snelle oplossing zonder dat ik er omkijken naar heb.

Als zo'n automatisch script o.i.d. te ingewikkeld wordt dan zal ik 't gewoon doen d.m.v. een eenvoudig query in een .php-file die ik kan openen in een browser.

edit: Ik kan ook m'n PC de hele dag aan laten staan (staat ie toch al), de hele dag m'n browser open laten staan op die query en die pagina automatisch laten refreshen ... maar ik zoek een iets chiquere oplossing :P.

[ Voor 7% gewijzigd door Wouter! op 29-10-2006 22:21 ]


Acties:
  • 0 Henk 'm!

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
Automatiseren kan via crontab, als je server linux draait, maar je kan beter een invoerveld maken waarbij mensen confirm moeten typen waarna de message pas toegevoegd kan worden. Hou bij de laatste rekening dat het verschil tussen hoofdletters en kleine letters niet moet uitmaken(voor het gemak ;) ).

[ Voor 4% gewijzigd door EnsconcE op 29-10-2006 22:25 ]


Acties:
  • 0 Henk 'm!

  • Pyrus
  • Registratie: November 2001
  • Laatst online: 20-09 21:30

Pyrus

Hardknock life

Wat is je vraag nou eigenlijk?

anyhow, als je in je huidige code gewoon iets als het volgende doet ben je er ook vanaf:
PHP:
1
2
if(strpos($_POST['nieuwbericht'], $arraymetfoutewoorden)===FALSE)
{ //voeg nieuw bericht toe }

LinkedIn


Acties:
  • 0 Henk 'm!

Verwijderd

Je zou die code toch ook gewoon toe kunnen voegen aan de pagina waarmee er een bericht wordt opgeslagen in de tabel? Niet helemaal de juiste oplossing, maargoed je wilt er ook niet veel tijd insteken.

Acties:
  • 0 Henk 'm!

  • ilovetechno
  • Registratie: Oktober 2001
  • Laatst online: 17:06
Captcha inbouwen.. Staan tal van tutorials voor PHP op het net.

http://en.wikipedia.org/wiki/Captcha

Acties:
  • 0 Henk 'm!

  • Wouter!
  • Registratie: Maart 2001
  • Laatst online: 19-09 15:03
Hmm, weer wat tips hier waar ik zo één, twee, drie niet aan had gedacht. Ik zal 'ns bekijken of ik snel zoiets kan inbouwen. 't Wordt trouwens extern gehost dus ik kan niet vanalles op de server gaan doen jammergenoeg ...

Acties:
  • 0 Henk 'm!

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
Wouter! schreef op zondag 29 oktober 2006 @ 22:55:
Hmm, weer wat tips hier waar ik zo één, twee, drie niet aan had gedacht. Ik zal 'ns bekijken of ik snel zoiets kan inbouwen. 't Wordt trouwens extern gehost dus ik kan niet vanalles op de server gaan doen jammergenoeg ...
Ligt aan welke server, alle ideeen behalve die van mij (crontab) zijn zowiezo uit te voeren. Mijn webhoster laat mij wel toe crontab in te stellen. Maar dat is wel de lelijkste oplossing want wat nou als iemand jou een message wil sturen met de verboden woorden?

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

www.akismet.com? pakt bijna al dit soort spams. 't idee is dat je bij het posten al de content checkt met akismet en dat die je dan vertellen of 't spam is zodat 't je database niet eens inkomt.

[ Voor 64% gewijzigd door CyBeR op 30-10-2006 08:23 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • NielsNL
  • Registratie: Januari 2002
  • Laatst online: 08-09 20:14

NielsNL

DigiCow

Of een plaatje genereren met random letters, en die laten overtypen, is alleen wel meer werk om te bouwen dan alleen kijken of "href=" in je message staat.
Veel van die spam wordt nml. met automagische scripts gepost (kijk maar in je access logs), en die kunnen die plaatjes niet ontcijferen.

M'n Oma is een site aan het haken.


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Helaas vinden gebruikers die plaatjes rete-irritant en er zijn wel degelijk robots die simpele captcha's OCR'en en omzeilen.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

Verwijderd

Wat betreft captcha's... een enigszins veilig alternatief is checken hoeveel tijd er is gepasseerd tussen het openen van de "invoer" pagina en het "submitten" van het daadwerkelijke bericht... hiermee voorkom je automagisch posten.... maar ook dubbele User-invoeren mbv back/reload buttons.

En je database "automatisch" laten legen... kun je dus of met crontab's doen of dmv aanroepen van het script doordat gebruikers het gastenboek tekenen/lezen.

Acties:
  • 0 Henk 'm!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
CyBeR schreef op maandag 30 oktober 2006 @ 11:53:
Helaas vinden gebruikers die plaatjes rete-irritant en er zijn wel degelijk robots die simpele captcha's OCR'en en omzeilen.
Ik hoorde laatst een mooie truuc om dat zonder OCR te doen:
• je download de captcha img
• upload het naar je eigen server, alwaar je gratis porno host
• je plaatst de captcha voor toegang tot gratis porno
• je laat ipv OCR dus gewoon geile fapperts de herkenning doen
• je spamt de blog waarvan je de captcha hebt.

Als je een beetje genoeg bezoekers hebt op je gratis porno site (niet zo'n probleem lijkt me) kun je je helemaal ziek spammen, hoe lastig de captcha ook is :)

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Genoil schreef op maandag 30 oktober 2006 @ 12:31:
[...]


Ik hoorde laatst een mooie truuc om dat zonder OCR te doen:
• je download de captcha img
• upload het naar je eigen server, alwaar je gratis porno host
• je plaatst de captcha voor toegang tot gratis porno
• je laat ipv OCR dus gewoon geile fapperts de herkenning doen
• je spamt de blog waarvan je de captcha hebt.

Als je een beetje genoeg bezoekers hebt op je gratis porno site (niet zo'n probleem lijkt me) kun je je helemaal ziek spammen, hoe lastig de captcha ook is :)
Hah, da's eigenlijk best briljant (doch verwerpelijk). Ik zou er niet opgekomen zijn :)

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

Verwijderd

@Genoil.. heb ik inderdaad ook ergens gelezen, wel een hele "stoere" truc... wel lastig om die hele "communicatie" op te zetten, een beetje slimme Captcha heeft volgens mij wel een bepaalde "houdbaarheid". Doet me een beetje denken aan dat spelletje van Google, waarbij twee gebruikers dezelfde plaatjes voorgeschoteld krijgen en er individueel keywords aan hangen. Indien er een match is, is het waarschijnlijk een goeie beschrijving van de afbeelding.

Acties:
  • 0 Henk 'm!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Verwijderd schreef op maandag 30 oktober 2006 @ 13:17:
@Genoil.. heb ik inderdaad ook ergens gelezen, wel een hele "stoere" truc... wel lastig om die hele "communicatie" op te zetten, een beetje slimme Captcha heeft volgens mij wel een bepaalde "houdbaarheid". Doet me een beetje denken aan dat spelletje van Google, waarbij twee gebruikers dezelfde plaatjes voorgeschoteld krijgen en er individueel keywords aan hangen. Indien er een match is, is het waarschijnlijk een goeie beschrijving van de afbeelding.
Ja lijkt me ook wel lastig. Op zich wel interessant om eens te kijken of het echt kan werken, maar eigenlijk wil je dit soort praktijken ook helemaal niet in de ahdn werken, ik bedoel, captcha's overtikken terwijl je lekker zit te fappen, wie wil dat nou ;)?

Acties:
  • 0 Henk 'm!

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
Genoil schreef op maandag 30 oktober 2006 @ 13:35:
[...]


Ja lijkt me ook wel lastig. Op zich wel interessant om eens te kijken of het echt kan werken, maar eigenlijk wil je dit soort praktijken ook helemaal niet in de ahdn werken, ik bedoel, captcha's overtikken terwijl je lekker zit te fappen, wie wil dat nou ;)?
Een captcha is zowiezo lame, maar eigenlijk is het intikken van 'confirm' of 'abc' of je sitenaam ook lame. Die periode dat iemand tijd nodig heeft om een bericht in te typen is wel geniaal. Overigens kan je, niet dat spammers er moeite voor doen, de tijd variabel maken. Zeg maar tussen de 10 en 20 sec, or whatever. De tijd moet iig niet te lang zijn want wat als iemand een kort bericht wil achterlaten?

Acties:
  • 0 Henk 'm!

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Als je niet een al te populaire site hebt helpt een captcha oid het best. Alleen op hele drukke sites gaan die h4ck0rtjes misschien extra moeite doen door zoals iemand hierboven beschreef met porn-sites. Jouw site is ws. niet de moeite waard en daar laten ze alleen hun standaard botjes op los (die je site via google vinden).

Ik heb zelf de laatste tijd ook extreem veel last van zulke spam. Omdat ik een veelgebruikt gastenboekscript gebruik (module voor een CMS) was dat een makkelijk doelwit voor spammers. Toen heb de filenames van het gastenboek veranderd. Dat hielp in eerste instantie wel (paar maanden vrijwel geen spam), maar na verloop zijn die botjes denk ik intelligenter geworden en vullen ze de site ws. gewoon in via een browser oid (ipv. rechstreeks de "submit.php?naam=spambot&message=www.spam.com" aan te roepen ;)) waardoor de filenames niet meer uitmaken. Daarom heb ik nu heel simpel een extra invulveldje toegevoegd aan het gastenboek waar de gebruiker een getoond woord moet invullen. In de 'submit.php' heb ik dan een heel simpele check gemaakt die "if ($_POST['geheim_woord'] <> "geheim_woord") { die ("HACKER!!!"); } " doet ;)
Ik had ook wel een echte captcha kunnen maken die een random code genereert, maar ik had geen zin om er teveel tijd aan te besteden. Daarom zoiets simpels als dit ;)
En ingelogde gebruikers laat ik het ding niet zien, dus de factor overlast is voor de vaste gebruiker nihil.

En van de een op de andere dag had ik geen spam meer. Ik laat wel voor de grap alle genegeerde reacties in een textbestandje opslaan en dat is sinds de paar dagen dat ik dit gebruik al behoorlijk groot....

[ Voor 3% gewijzigd door Palomar op 30-10-2006 14:25 ]


Acties:
  • 0 Henk 'm!

  • Wouter!
  • Registratie: Maart 2001
  • Laatst online: 19-09 15:03
Sja, wel wat mooie oplossingen hier die veel netter zijn dan wat ik nu heb gemaakt :X ... maar het werkt voorlopig wel eventjes :).

Ik heb 't nu zo gemaakt dat voor iedere "normale" gebruiker die het gastenboek opent eerst op spam wordt gecheckt en die spam uit de database wordt gegooid. Zo ziet de eindgebruiker de spam niet omdat die al voor het inladen van de reguliere gastenboek-records is verwijderd.

Absoluut geen nette oplossing maar voorlopig wel eventjes effectief.
Allen bedankt in elk geval!

[off-topic]Is het trouwens normaal dat je bij het openen van Programming op GoT automatisch wordt uitgelogd :?[/off-topic]

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Ehm..

Is het een select groepje vrienden? Zorg ervoor dat iedereen zich moet registreren voordat ze wat kunnen posten en dat de admin even op een confirm knopje moet drukken voordat dat account actief wordt, niet actief = niet kunnen posten, zo ben je alle neppe users kwijt en heb je naast het 1x actieveren van ieders account er geen omkijken naar.

(users zelf laten activeren via auto-mail kan ook, maar er zijn al wat bots die dat zelf al kunnen)

Als je een pbpBB forum draait kun je dit bovenste met 1 druk op de knop zo instellen. zowieso zijn accounts wel handig, dat niet iemand (een buitenstaander kl**thommel bijvoorbeeld) om te pesten wat als een ander typt.

;) wie weet heb je hier wat aan!

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

Verwijderd

Palomar schreef op maandag 30 oktober 2006 @ 14:23:
Ik heb zelf de laatste tijd ook extreem veel last van zulke spam. ...............
Maar als er in submit.php alleen op POST variabelen wordt gecheckt, zal het benaderen hiervan via GET geen resultaat opleveren. Dan kan je natuurlijk altijd nog de bestandsnaam van submit.php veranderen, check dan alleen even of de verwijzingen vanaf gb.php nog kloppen in de <form action="">

Acties:
  • 0 Henk 'm!

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Captcha's zijn ranzig :P Als het een custom gastenboek is, dan kun je het beste een eenvoudig stukje JS toevoegen dat bij submit een hidden input veld moet invullen, waarna je in php checkt of de juiste waarde is ingevuld.

Bijvoorbeeld:
HTML:
1
2
3
4
5
<form name="gastenboek" method="post" action="gastenboek.php">
    ...
    <input type="hidden" name="purge" value="false">
    <input type="button" value="verwerk gegevens" onclick="submitGastenboek();">
</form>


JavaScript:
1
2
3
4
function submitGastenboek() {
    document.gastenboek.purge.value = 'true';
    document.gastenboek.submit();
}


PHP:
1
2
3
4
5
if (isset($_POST['purge']) && $_POST['purge'] == 'true') {
    // Verwerk submit.
} else {
    // Negeren. Of doe iets wat je wilt.
}


Zo heb ik het ook al sinds een jaartje in mijn gastenboek zitten. Werkt perfect :) Ik ben nog geen spambot tegengekomen dat javascript kan lezen.

[ Voor 3% gewijzigd door BalusC op 30-10-2006 19:09 ]


Acties:
  • 0 Henk 'm!

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Verwijderd schreef op maandag 30 oktober 2006 @ 17:23:
[...]


Maar als er in submit.php alleen op POST variabelen wordt gecheckt, zal het benaderen hiervan via GET geen resultaat opleveren. Dan kan je natuurlijk altijd nog de bestandsnaam van submit.php veranderen, check dan alleen even of de verwijzingen vanaf gb.php nog kloppen in de <form action="">
ja klopt, was een slecht voorbeeld, maar POST-variabelen kun je volgens mij ook wel op zo'n manier invoeren zonder gebruik te maken van het eigenlijke formulier. En daar ging het me even om.
BalusC schreef op maandag 30 oktober 2006 @ 19:08:
Captcha's zijn ranzig :P Als het een custom gastenboek is, dan kun je het beste een eenvoudig stukje JS toevoegen dat bij submit een hidden input veld moet invullen, waarna je in php checkt of de juiste waarde is ingevuld.

Bijvoorbeeld:
HTML:
1
2
3
4
5
<form name="gastenboek" method="post" action="gastenboek.php">
    ...
    <input type="hidden" name="purge" value="false">
    <input type="button" value="verwerk gegevens" onclick="submitGastenboek();">
</form>


JavaScript:
1
2
3
4
function submitGastenboek() {
    document.gastenboek.purge.value = 'true';
    document.gastenboek.submit();
}


PHP:
1
2
3
4
5
if (isset($_POST['purge']) && $_POST['purge'] == 'true') {
    // Verwerk submit.
} else {
    // Negeren. Of doe iets wat je wilt.
}


Zo heb ik het ook al sinds een jaartje in mijn gastenboek zitten. Werkt perfect :) Ik ben nog geen spambot tegengekomen dat javascript kan lezen.
Schijnt dat de spambots van tegenwoordig gewoon draaien op de user interface van een browser. De bot vult dus gewoon alle veldjes in op de gastenboeken die die tegenkomt. Net zoals elke andere bezoeker dat zou doen. Daar helpt javascript niet tegen. Het enige wat dan wel helpt is dus een captcha, omdat daar menselijke intelligentie voor nodig is om te begrijpen.

Acties:
  • 0 Henk 'm!

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Ik had er in ieder geval sindsdien nooit last van gehad. Ook had ik in de meta robots tag de "noindex" toegevoegd zodat de gastenboek niet via google te vinden is en in Apache een rewriterule toegevoegd om de zoekmachines van de spammers te blokkeren.

Overigens, sinds ik de website activiteit had gekoppeld aan een realtime logging database (voor webstatistieken) had ik ook de gastenboek daaraan gekoppeld. Diegene die direct de gastenboek opent zonder dat die ook maar ergens anders op de website is geweest en dan binnen 1 tel een bericht plaatst, wordt gewoon genegeerd.

[ Voor 6% gewijzigd door BalusC op 30-10-2006 20:16 ]


Acties:
  • 0 Henk 'm!

  • Paul C
  • Registratie: Juni 2002
  • Laatst online: 14:02
Doe gewoon dit:
code:
1
Bij jij een mens? <input name="mens" type="text" value="nee">

en dan dit:
PHP:
1
2
3
4
5
6
if($_GET['mens'] == 'ja') {
   // execute
}
else {
    echo 'sorry, dit gastenboek is alleen voor mensen. Antwoord met 'ja'.';
}

Acties:
  • 0 Henk 'm!

  • Wouter!
  • Registratie: Maart 2001
  • Laatst online: 19-09 15:03
therat10430 schreef op maandag 30 oktober 2006 @ 14:33:
Ehm..

Is het een select groepje vrienden? Zorg ervoor dat iedereen zich moet registreren voordat ze wat kunnen posten en dat de admin even op een confirm knopje moet drukken voordat dat account actief wordt, niet actief = niet kunnen posten, zo ben je alle neppe users kwijt en heb je naast het 1x actieveren van ieders account er geen omkijken naar.

(users zelf laten activeren via auto-mail kan ook, maar er zijn al wat bots die dat zelf al kunnen)

Als je een pbpBB forum draait kun je dit bovenste met 1 druk op de knop zo instellen. zowieso zijn accounts wel handig, dat niet iemand (een buitenstaander kl**thommel bijvoorbeeld) om te pesten wat als een ander typt.

;) wie weet heb je hier wat aan!
Accounts hebben we gehad in een eerder gastenboek maar die heb ik er bewust niet meer inzitten. 't Is in principe een besloten gastenboek maar nu ook weer niet zó besloten en het moet eventueel voor anderen wel mogelijk zijn er iets op te plaatsen.

Ik heb nu overigens gewoon een knopje op de site gemaakt met "Verwijder spam" (dus niet meer automatisch). Alle gebruikers kunnen daar op klikken. Dat heb ik bewust gedaan omdat 't verder allemaal computer-leken zijn (basis office-kennis e.d.) en ze 't wel interessant vinden om met één druk op de knop alle spam te kunnen verwijderen ... en 't werkt >:) ... ze zijn dolblij :D.

Acties:
  • 0 Henk 'm!

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Als het een niet al te zwaar script is (zal wel niet met die paar spam-berichtjes) zou je dat script ook gewoon automatisch kunnen laten uitvoeren als iemand je site bezoekt (die code gewoon in de source plakken dus). Om het wat minder belastend te maken kun je het dan ook alleen op 1 pagina doen die minder vaak bezocht wordt. En dan evt. alleen nog als de tijd (bijv.) xx:x5 uur is.

Dat de gebruikers zelf moeten klikken vind ik wel een beetje een erg paardenmiddel ;)

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Een hele simpele die schijnbaar van wat ik gehoord heb best goed werkt is iets neerzetten als:
"drie maal drie is?", en dan het invulveld laten invullen met het antwoord daarop.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Verwijderd

CyBeR schreef op maandag 30 oktober 2006 @ 08:22:
www.akismet.com? pakt bijna al dit soort spams. 't idee is dat je bij het posten al de content checkt met akismet en dat die je dan vertellen of 't spam is zodat 't je database niet eens inkomt.
Akismet werkt erg goed, maar is volgens mij alleen beschikbaar als plugin voor oa Wordpress enzo.

Acties:
  • 0 Henk 'm!

  • Wouter!
  • Registratie: Maart 2001
  • Laatst online: 19-09 15:03
Palomar schreef op dinsdag 31 oktober 2006 @ 00:08:
Als het een niet al te zwaar script is (zal wel niet met die paar spam-berichtjes) zou je dat script ook gewoon automatisch kunnen laten uitvoeren als iemand je site bezoekt (die code gewoon in de source plakken dus). Om het wat minder belastend te maken kun je het dan ook alleen op 1 pagina doen die minder vaak bezocht wordt. En dan evt. alleen nog als de tijd (bijv.) xx:x5 uur is.

Dat de gebruikers zelf moeten klikken vind ik wel een beetje een erg paardenmiddel ;)
Ik had 't er al automatisch inzitten als het gastenboek wordt geladen (lees effe een stukje omhoog), dit is gewoon even voor de lol :) (ze hebben nu al ruzie om wie 't eerst de spam mag verwijderen >:) ... hahaha, belachelijk). En dit is sowieso een paardenmiddel maar ik heb momenteel geen tijd om het hele gastenboek te gaan verbouwen of nieuwbouwen ;) ... 't is voorlopig wel effectief in elk geval.

[ Voor 4% gewijzigd door Wouter! op 31-10-2006 01:20 ]


Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 15:55
Waarom niet gewoon random 2 letters via de GD library generen. Wat is er moeilijk om 2 letters te typen. Ik weet niet hoeveel mensen er in plaatsen, maar anders moet je een betere oplossing bedenken. Als er maar 2 a 3 berichten op een dag komen kan je best ff 2 letters intypen. Kleine moeite :)

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Verwijderd schreef op dinsdag 31 oktober 2006 @ 01:07:
[...]


Akismet werkt erg goed, maar is volgens mij alleen beschikbaar als plugin voor oa Wordpress enzo.
Nee hoor, Akismet is een webservice met een web API waar je ook gewoon zelf dingen mee kunt coden. Het wordt wel het meest gebruikt met wordpress idd en helaas heb je er een wordpress.com account voor nodig voor een API key (jammer, maar die hoef je vervolgens natuurlijk niet te gebruiken). In mijn blog (WP idd, lekker makkelijk ;)) pakt 't vrijwel alle spams zonder dat ik er iets aan hoef te doen.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
Wouter! schreef op maandag 30 oktober 2006 @ 23:50:
[...]


Accounts hebben we gehad in een eerder gastenboek maar die heb ik er bewust niet meer inzitten. 't Is in principe een besloten gastenboek maar nu ook weer niet zó besloten en het moet eventueel voor anderen wel mogelijk zijn er iets op te plaatsen.

Ik heb nu overigens gewoon een knopje op de site gemaakt met "Verwijder spam" (dus niet meer automatisch). Alle gebruikers kunnen daar op klikken. Dat heb ik bewust gedaan omdat 't verder allemaal computer-leken zijn (basis office-kennis e.d.) en ze 't wel interessant vinden om met één druk op de knop alle spam te kunnen verwijderen ... en 't werkt >:) ... ze zijn dolblij :D.
Misbruik maken van je onwetende bezoekertjes, you bastard! :+
pcmadman schreef op maandag 30 oktober 2006 @ 22:56:
Doe gewoon dit:
code:
1
Bij jij een mens? <input name="mens" type="text" value="nee">

en dan dit:
PHP:
1
2
3
4
5
6
if($_GET['mens'] == 'ja') {
   // execute
}
else {
    echo 'sorry, dit gastenboek is alleen voor mensen. Antwoord met 'ja'.';
}
Eigenlijk is het heel lelijk dat je je gebruikers de computer moet vertellen dat zij mens zijn en toegang moeten hebben tot je gastenboek. Het is vriendelijker om de spam buiten de deur te houden door de spam aan te vallen. Het laatste is wel een stuk moeilijker te maken dan je gebruikers "even" wat te laten typen, maar voor je gebruiker is het wel een stuk prettiger.

Acties:
  • 0 Henk 'm!

  • xces
  • Registratie: Juli 2001
  • Laatst online: 20-09 16:56

xces

To got or not to got..

En dan daarbij, die code geeft een exception \'ja\' bedoel je, maar goed. Er zijn veel verschillende manieren om spam te stoppen moeilijker te maken. Je kunt een aantal zaken doen waarvan er 2 al omschreven staan:
- Captcha; vereist een beetje technische kennis, en tussenkomst van de gebruiker. Dit is de meest effectieve denk ik zo, maar wel de lelijkste (ik gebruik hem momenteel zelf ook).
- Javascript oplossing 1: zoals vernoemd
- Javascript oplossing 2: Voeg door middel van javascript een veld toe met een waarde die je via AJAX ophaalt (sessie variabele ofzoiets) komt dit niet overeen, is het formuliier ongeldig
- Sessies: Declareer een sessie variabele afhankelijk van door jezelf te bepalen criteria
- Tijd 1: Neem de tijd op die het minimaal kost om het formulier in te vullen. Is het formulier binnen die tijd verzonden is het waarschijnlijk spam
- Flood protection: Neem de tijd op tussen berichten afkomstig van hetzelfde IP adres, is dat te snel, dan weet je het wel :p

Nog meer tips? http://ajaxian.com/archives/busting-the-bots-with-ajax

Acties:
  • 0 Henk 'm!

Verwijderd

Palomar schreef op dinsdag 31 oktober 2006 @ 00:08:
Als het een niet al te zwaar script is (zal wel niet met die paar spam-berichtjes) zou je dat script ook gewoon automatisch kunnen laten uitvoeren als iemand je site bezoekt (die code gewoon in de source plakken dus). Om het wat minder belastend te maken kun je het dan ook alleen op 1 pagina doen die minder vaak bezocht wordt. En dan evt. alleen nog als de tijd (bijv.) xx:x5 uur is.

Dat de gebruikers zelf moeten klikken vind ik wel een beetje een erg paardenmiddel ;)
Wat ik ook een grappige methode vind, om toch de functie (af en toe) uit te laten voeren, maar met het oog op belasting op de server het niet elke keer te doen, is een random vaiabele uit php trekken, is deze bijvoorbeeld >0,9 dan voer je het script uit, je hebt dan dus +/- 10% kans dat het script wordt uitgevoerd. Als je namelijk alleen iets met tijd doet, heb je kans dat er tijden niemand om die tijd op de site komt. Misschien voor deze site zowiezo niet zo boeiend aangezien de overhead van zo'n opschoonactie nihil is lijkt me.

Acties:
  • 0 Henk 'm!

  • ReseTTim
  • Registratie: Juni 2000
  • Laatst online: 20-09 16:23

ReseTTim

Chocolate addicted

ik heb ook is iets gezien dat je kan kijken of het via een browser was ingevoerd. is dat dan niet meer veilig?

PHP:
1
2
3
4
5
6
<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";

$browser = get_browser(null, true);
print_r($browser);
?> 

[ Voor 36% gewijzigd door ReseTTim op 31-10-2006 15:24 ]

Mijn profiel - Te koop: Overzicht van spullen..


Acties:
  • 0 Henk 'm!

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
ReseTTim schreef op dinsdag 31 oktober 2006 @ 15:21:
ik heb ook is iets gezien dat je kan kijken of het via een browser was ingevoerd. is dat dan niet meer veilig?

PHP:
1
2
3
4
5
6
<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";

$browser = get_browser(null, true);
print_r($browser);
?> 
Dat is ook een optie, maar dat betekend dat je alle browser agents bij moet gaan houden. Hou dan ook rekening met winamp. Misschien is er wel ergens een lijst aan browser agents. Er zijn geloof ik ook mensen die hebben geen browser agent ingevuld. Voor FF kan je het namelijk aanpassen via een plugin.

PHP:
1
2
3
4
$browser = get_browser();
if (in_array($browser->browser, $allowedBrowserList) {
    //do your guestbook thing
}

[ Voor 9% gewijzigd door EnsconcE op 31-10-2006 15:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

@EnsconcE: Is er een vaste lijst voor $allowedBrowserlist? vind het namelijk wel een interessante optie. Heb laatst echter ook iets geprobeerd met get_browser() maar kreeg toen foutmeldingen met betrekking tot een bepaalde verwijzing vanuit php.ini naar browscap.ini. Is er nog een alternatief als je, doordat je sites laat hosten, geen toegang hebt tot php.ini?

Acties:
  • 0 Henk 'm!

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
Verwijderd schreef op dinsdag 31 oktober 2006 @ 15:46:
@EnsconcE: Is er een vaste lijst voor $allowedBrowserlist? vind het namelijk wel een interessante optie. Heb laatst echter ook iets geprobeerd met get_browser() maar kreeg toen foutmeldingen met betrekking tot een bepaalde verwijzing vanuit php.ini naar browscap.ini. Is er nog een alternatief als je, doordat je sites laat hosten, geen toegang hebt tot php.ini?
Op de website staat dit als oplossing voor je browsercap.ini
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function php_get_browser($agent = NULL){
    $agent = $agent?$agent:$_SERVER['HTTP_USER_AGENT'];
    $yu = array();
    $q_s = array("#\.#", "#\*#", "#\?#");
    $q_r = array("\.", ".*", ".?");
    $brows = parse_ini_file("php_browscap.ini",true);

    foreach($brows as $k => $t){
        if(fnmatch($k, $agent)){
            $yu['browser_name_pattern'] = $k;
            $pat=preg_replace($q_s, $q_r, $k);
            $yu['browser_name_regex'] = strtolower("^$pat$");

            foreach($brows as $g => $r){
                if($t['Parent'] == $g){
                    foreach($brows as $a => $b){
                        if($r['Parent'] == $a){
                            $yu = array_merge($yu, $b, $r, $t);
                            foreach($yu as $d => $z){
                                $l = strtolower($d);
                                $hu[$l] = $z;
                            }
                        }
                    }
                }
            }
        break;
        }
    }
return $hu;
}


Hiermee kun je een browsercap.ini file pakken van waar je maar wilt.

De code van mijn vorige post heb ik snel in elkaar geflanst, ik weet dus ook niet 100% of het werkt. De $allowedBrowserList die ik daar gebruik is niet standaard, het is nog wel de bedoeling dat je die zelf vult met alle browsers. Misschien bestaat er wel ergens een standaard lijst die je kan parsen, misschien is er ook wel een standaard functie in PHP.

Acties:
  • 0 Henk 'm!

  • NielsNL
  • Registratie: Januari 2002
  • Laatst online: 08-09 20:14

NielsNL

DigiCow

Ik kan me eigenlijk niet voorstellen dat de spambotjes daar geen rekening mee houden, die sturen vast wel een browser-agent dingetje mee. Ik heb er eerlijk gezegd nog niet op gelet.
En mijn gebruikers vinden 3 lettertjes intypen minder bezwaarlijk dan een gastenboek vol spam.
Hoe zouden die spambotjes aan zoveel verschillende IP's komen trouwens?

M'n Oma is een site aan het haken.


Acties:
  • 0 Henk 'm!

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
NielsNL schreef op dinsdag 31 oktober 2006 @ 16:21:
Ik kan me eigenlijk niet voorstellen dat de spambotjes daar geen rekening mee houden, die sturen vast wel een browser-agent dingetje mee. Ik heb er eerlijk gezegd nog niet op gelet.
En mijn gebruikers vinden 3 lettertjes intypen minder bezwaarlijk dan een gastenboek vol spam.
Hoe zouden die spambotjes aan zoveel verschillende IP's komen trouwens?
Spambots sturen een user agent mee, maar misschien geen firefox oid, daar ben ik niet van de op de hoogte.

Je gastenboek bezoekers hebben er nog minder problemen mee wanneer ze alleen het noodzakelijke moeten invoeren ;).

Maar wie weet hoe het zit met de user agents? Wat voor user agent heeft een spam bot?

Acties:
  • 0 Henk 'm!

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

ReseTTim schreef op dinsdag 31 oktober 2006 @ 15:21:
ik heb ook is iets gezien dat je kan kijken of het via een browser was ingevoerd. is dat dan niet meer veilig?

PHP:
1
2
3
4
5
6
<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";

$browser = get_browser(null, true);
print_r($browser);
?> 
Nutteloos, spambots maken gebruik van een geldige useragent. Heel vaak gewoon IE6 op WinXP.

Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
BalusC schreef op dinsdag 31 oktober 2006 @ 21:12:
[...]

Nutteloos, spambots maken gebruik van een geldige useragent. Heel vaak gewoon IE6 op WinXP.
Gewoon een Getfirefox banner dus als de browser IE6 is. :Y) Ben je meteen van je spam af. >:)

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?

Pagina: 1