Avatar billede lose2life Nybegynder
04. juli 2006 - 07:16 Der er 17 kommentarer og
1 løsning

Gæstebog's bots

Hej
Jeg har en ret simpelt PHP gæstebog hvor jeg har brugt en MySQL database.
Deværre har jeg store problemer med at der kommer bots forbi, hver eneste dag, og smider lange beskeder, som faktisk kun består af links. Jeg har slået html fra så der kommer bare en masse html koder.
Nogle der har en løsning til hvordan man kan undgå at de skriver?
Avatar billede Slettet bruger
04. juli 2006 - 08:37 #1
Den mest udbredte løsning er at lave en lille drop-down boks med eksempelvis tre resultater til et givent regnestykke, hvor man så lige skal vælge den rigtige værdi, før der postes i gæstebogen.

--pacroon
Avatar billede jakobdo Ekspert
04. juli 2006 - 08:38 #2
Du kan evt. kigge på captcha: http://en.wikipedia.org/wiki/Captcha
Avatar billede espersen Novice
04. juli 2006 - 09:18 #3
spamrobotterne acceptere langtfra sikkert din robots.txt på dit website ; derfor se denne artikel her på exp til ASP-sider : http://www.eksperten.dk/artikler/253

som er en "oversættelse" af en artikel skrevet til PHP : http://www.kloth.net/internet/bottrap.php

Det smarte er at spamrobotterne jo bør og skal anerkende robots.txt - og sålænge de gør det så ryger de ikke i fælden. I robots-txt er det anført at de IKKE skal læse siderne med spam-fælden - gør de alligevel det så aflæser den IP adressen på robotten og banner den totalt fra dine sider)
Avatar billede iss Novice
04. juli 2006 - 11:01 #4
espersen, nu er lose2life problem ikke søge robotter, men spam robotter.

lose2life, jeg har lavet en der skriver brugere useragent med noget javascript i en hidden form, når man så poster kan man så se om useraget stadig er den samme... er den ikke får man bare bsked om at man skal slå javascript til.
Avatar billede iss Novice
04. juli 2006 - 11:17 #5
Har lige kogt det ned:
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<?
$string = "<input type=\"hidden\" name=\"spamtrap\" value=\"".$_SERVER['REMOTE_ADDR']."\">";
for($i = 0, $len = strlen($string); $i < $len; $i++ ) {
    $ord[] = ord($string[$i]);
}
echo "<script type=\"text/javascript\" language=\"javascript\">\n<!--\n{document.write(String.fromCharCode(".implode(',',$ord)."))}\n//-->\n</script>\n";
?>
<input type="submit">
</form>

<?
if(isset($_POST)) {
    if(isset($_POST['spamtrap']) && $_SERVER['REMOTE_ADDR'] == $_POST['spamtrap']) {?>
Alt ok.
<?    }
    else {?>
Slå JavaScript til.   
<?    }
}
?>
Avatar billede codebase Praktikant
04. juli 2006 - 11:19 #6
du kan i din edit fil benytte denne line kode, der kontrollere om robotten kommer direkte til dit script.

if (!eregi($_SERVER["HTTP_HOST"], $_SERVER["HTTP_REFERER"]) )
{
    header( "Location: /" );
    exit;
}

din kode herunder
Avatar billede Slettet bruger
04. juli 2006 - 11:22 #7
iss > Begge espersens links er da tiltænkt til spamrobotter?
Avatar billede iss Novice
04. juli 2006 - 11:35 #8
codebase, husk der er nogle der slår HTTP_REFERER fra i deres firewall...

pacroon, nej, det er søge robotter, dem der spammer søger nødvendigt vis ikke på samme måde som de spammer på. Har set flere robotter inde som med en agent søger og i en anden forsøger at poste, så den måde er 99% ubruglig. Som efter man har bannet søgeren man ikke posteren.
Avatar billede Slettet bruger
04. juli 2006 - 14:01 #9
Ofte vil spambots ikke komme på andre sider end den ene, som formularen ligger på. Det vil derfor ikke hjælpe at lægge "fælder" i form af andre sider.

Hvordan finder en spambot så formularen, vil nogen spørge. De gør såmænd lige som os andre: bruger Google (og andre søgemaskiner).
Avatar billede lose2life Nybegynder
04. juli 2006 - 16:25 #10
iss -> Så jeg ska bare ligge det ind på siden et sted? Må det gerne være helt oppe i toppen?
Avatar billede codebase Praktikant
04. juli 2006 - 18:52 #11
$_SERVER er server variabler dem kan du ikke disable...
Avatar billede espersen Novice
04. juli 2006 - 19:47 #12
ok - klart ikke anvendeligt hvis "søgeren" og "spammeren" kommer fra hver sin IP-adresse. ;o) - men ellers brugbart overfor ens IP'ere der ikke følger robots.txt
Avatar billede iss Novice
04. juli 2006 - 20:15 #13
lose2life, du sætter form tingen ind i din HTML form, og "alt ok" erstatter du med den kode der skriver i din gæstebog.

codebase, nu henter PHP HTTP_REFERER fra HTTP headeren, og det er nu en gang ikke PHP der bestemmer om den er sat eller ej. Kan med garanti sige at hvis du forsøger at læse min så er den tom...
Avatar billede lose2life Nybegynder
05. juli 2006 - 18:32 #14
Så har fået det til at virke og tror også bott'ne holder sig væk, ingen der har skrevet indtil videre.. Nice :-) Lægger du et svar iss?
Avatar billede iss Novice
05. juli 2006 - 19:26 #15
Ellers tak...
Avatar billede lose2life Nybegynder
06. juli 2006 - 16:21 #16
Nå men så bare mange tak for hjælpen :-)
Avatar billede Slettet bruger
06. juli 2006 - 19:10 #17
Bare lige for en ordens skyld bør du lægge et svar selv og acceptere det, så spørgsmålet ikke længere står som ubesvaret.
Avatar billede lose2life Nybegynder
08. juli 2006 - 08:48 #18
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester