Gå til innhold

Hvordan sikre gjestebok mot flooding


Anbefalte innlegg

Dette gjelder noe jeg har laget i php men jeg legger det her da det har et mer generelle ting enn hvordan scriptet er laget.

 

Jeg har skrevet en gjestebok i php hvor jeg har hatt problemer med flodding. med flooding mener jeg at boter (jeg mistenker iallefall at det er boter) legger igjen "hilsninger" i gjesteboken i form av reklame for divserse produkter/hjemmesider. hittil har jeg sperret ip-adressene som har vært brukt til å legge igjen "hilsninger2 av denne typen. I det siste har det tatt seg opp såpass at jeg enten må gjennomføre nye tiltak eller stenge gjesteboken.

 

her er noen tiltak som jeg skal gjennomføre:

- jeg ønsker først og fremst å lage en automatisering av blokkeringen av ip'ene til den/de som spammer ned gjesteboken.

- alle innlegg sjekker for uønskede ord (feks sex, viagra osv). ip'n til de med uønskede ord blir sperret automatisk og sendt til en ekstern side.

- alle innlegg sjekkes for om de inneholder html-kode/linker. Også her sperres ip'n automatisk hvis det forekommer.

 

er det noen som har noen forslag til hva det skal reageres på for å stoppe dette? (kan jeg feks sette opp robots.txt for å sperre mot alle botet?).

Lenke til kommentar
Videoannonse
Annonse

Denne skal vel egentlig i PHP-biten, eller? Ser du mener noe annet, men det er mer web*utvikling* enn web*design*.

 

Botene vil nok ikke bry seg om din robots.txt-fil, for da forsvinner jo litt av poenget for dem.

 

Om du gjør slik at alle lenker som blir postet får en NOFOLLOW-egenskap vil derimot de seriøse søkemotorene (google osv.) ikke følge lenken, så de tjener ingen pagerank eller noe på å spamme. Da forsvinner litt av poenget.

 

Det Cavey fra norskwebforum satte igang med på sin blogg var et logisk spørsmål. Hva er hovedstaden i Norge? Oslo. Om det blir svart noe annet kan man enten ikke norsk (og kan vel ikke poste noe vettugt i din gjestebok uansett ) eller man er en bot som bare har stappet inn noe tilfeldig. Jeg synes det er den beste og letteste måten å gjøre det på, og det er ikke irriterende for brukerne, som captcha-bilder osv. er.

Lenke til kommentar

Det er både irriterende for brukerne å måtte skrive inn uleselige små knotter, samtidig som en del bot-er nå kan lese av bilder.

 

Med Caveys metode må man tilpasse boten til hvert enkelt tilfelle, og om en bot kommer igjennom bytter man bare spørsmål. De fleste botene kjører bare igjennom weben, klarer de ikke en gjestebok går de videre til neste og bryr seg ikke om å tilpasse seg for hver enkelt side.

 

En idé er at etter man har svart riktig lagres en cookie. Ikke med $ikkebot = TRUE, men med svaret på spørsmålet, så er det ferdigutfylt.

Lenke til kommentar

Å blokkere IP-ene er ganske poengløst. Det er gjerne snakk om store bot-net som kjører fra virusinfiserte hjemme-maskiner, slik at det er veldig mange og varierende ip-er.

 

Det holder å kjøre en exit() med en gang scriptet mistenker det for å være en bot.

 

En captcha på en eller annen måte er vel den beste sjekken.

 

Andre ting som kan funke i større eller mindre grad, hvis du veldig gjerne vil slippe å ha en captcha:

- Sjekk for bestemte ord

- Sjekk for html

- Sjekk for url-er

- Sjekk for bokstaver som x og q i navn-felt o.l.

- Bytt navn på input-feltene slik at de ikke heter "email" men "digitalpost" eller noe annet teit

- Ha et hidden input-felt, og exit hvis dette sendes inn med en verdi

- Ha en tekstboks som skjules med css, og exit hvis denne sendes inn med en verdi

- Bruk javascript til å gi en verdi til et hidden-felt, og exit hvis feltet har en annen verdi

 

Generelt sett er vel magi med css og javascript ganske brukbart, siden det krever spesialtilpassing av bot-en, noe som ikke vil skje for din gjestebok.

Lenke til kommentar
Det er både irriterende for brukerne å måtte skrive inn uleselige små knotter, samtidig som en del bot-er nå kan lese av bilder.

8196992[/snapback]

For noe bs! Det å lage bot-er som leser bildene er tidkrevende og svindyrt, og følgelig noe man bare gjør for større systemer (phpbb f.eks). Med andre ord leser ikke bot-er bildene. Det derimot bot-ene rimelig lett kan gjøre er å finne ut at her står det "Hva er hovedstaden i Norge?" og svaret er "Oslo". Hvis nok folk gjør det, skal du ikke se bort fra at en eller annen genial dude bak en bot finner ut at det kan være smart å legge til det ...
Lenke til kommentar
For noe bs! Det å lage bot-er som leser bildene er tidkrevende og svindyrt, og følgelig noe man bare gjør for større systemer (phpbb f.eks). Med andre ord leser ikke bot-er bildene. Det derimot bot-ene rimelig lett kan gjøre er å finne ut at her står det "Hva er hovedstaden i Norge?" og svaret er "Oslo". Hvis nok folk gjør det, skal du ikke se bort fra at en eller annen genial dude bak en bot finner ut at det kan være smart å legge til det ...

8201283[/snapback]

Vel, så bruk et annet spørsmål da. Dere gjør som dere vil, men selv synes jeg den metoden er mye bedre.

 

Kom bare med et tips jeg :whistle:

Endret av Matsemann
Lenke til kommentar

Dette er jo en evigvarende krig, mange gode forslag her allerede, og det å kombinere endel av dem vil nok gi deg det ønskede resultatet uten at det trenger å gjøre siden lite brukervennlig.

 

Kanskje det til og med kan holde med en usynlig link øverst på siden som gjør at alle boter som følger linken, får ip'en sin blokkert i 2 minutter. Om du ikke ønsker å blokkere "snille boter", kan du hindre tilgang til denne linken i robots.txt, en fil forhåpentligvis "snille boter" tar hensyn til, men ikke "slemme boter".

 

En blokkering i 2 minutter vil neppe lamme brukere hvor ip'ene deres er kompromiterte, men kan på den annen side gjøre at avanserte boter med tidsforsinkelse for hver link kan komme gjennom.

 

Prøv en metode, sannsynligvis virker den, iallfall en stund!

Lenke til kommentar
  • 3 uker senere...

Jeg har nå endelig fått ut fingeren med å redesigne hjemmesiden og har i den anledning skrevet om endel ting på gjesteboken min for å stoppe flooding. Jeg ønsker å ta i bruk endel tiltak før jeg setter igang med Captcha. Tiltakene som ble satt igang var:

 

- Jeg skjulte to tekstbokser og sjekket om de var fylt ut. Jeg skjulte den ene ved å bruke html og den andre ved hjelp av CSS. Hvis de er det er det noen boter som har vært på ferde og scriptet blir stoppet.

Jeg skjulte tekstboksene ved følgende kode:

<INPUT TYPE="hidden" NAME="phone" VALUE="">
<input type='text' name='gender' size='30' maxlength="30" VALUE="" style="display:none; visibility:hidden;">

 

Koden som sjekket on disse boksene forblir tomme og stoppet scriptet ble seende slik ut:

if ((!empty($_POST['phone'])) OR (!empty($_POST['gender']))) {
 error_message("An unknown error occurred while attempting writing in my guestbook.");
}

 

- Innleggene ble sjekket for html-kode. De ble stoppet hvis de gjorde så. Koden jeg brukte for dette er:

$text1 = (strip_tags($_POST['comment']));	
if (!($text1 == $_POST['comment'])) error_message("An unknown error occurred while attempting writing in my guestbook.");

 

-Sjekket innleggene for uønskede ord. Her la jeg også inn søk på om det ble lagt til link ved å søke etter ahref

(kanskje litt i simpleste laget fro å se ette rlinker men jeg vet foreløbig ikke om noe bedre). Jeg lagde først en array med uønskede ord og søkte igjennom kommentarene slik:

 

	
$banned_word = array("/viagra/i", "/sex/i","/href/i");
 
foreach ($banned_word as $banned) {
    if(preg_match ($banned, $_POST['comment'])) error_message("An unknown error occurred while attempting writing in my guestbook.");
}

Lenke til kommentar

Som du ser gjorde Ilpostino det, men ettersom en del BOT-er har lært seg dette trikset, skjulte han en via HTML/CSS også.

<input type='text' name='gender' size='30' maxlength="30" VALUE="" style="display:none; visibility:hidden;">

Ville bytta ut med:

<div id="hidden"> <!-- som har visibility: hidden; i CSS -->
Ikke fyll i dette feltet!
<input type='text' name='gender' size='30' maxlength="30" VALUE=""">
</div>

av 2 grunner:

1. Da slepper du at bot-ene sjekker visibility like lett.

2. Om man av en eller annen grunn ikke surfer med CSS, så vil feltet vises og man fyller kanskje noe i det (gutt/jente/mann/kvinne eller noe), mens nå, om CSS er deaktivert, så dukker teksten som sier at man ikke skal fylle i feltet opp ;)

Lenke til kommentar
- alle innlegg sjekker for uønskede ord (feks sex, viagra osv). ip'n til de med uønskede ord blir sperret automatisk og sendt til en ekstern side.

- alle innlegg sjekkes for om de inneholder html-kode/linker. Også her sperres ip'n automatisk hvis det forekommer.

8194141[/snapback]

Jeg er litt skeptisk til hvordan du angriper dette. Hva om en som bruker denne gjesteboka tester å bruke html-tagger eller spør om du vil ha sex med ham/henne, så blir han permbannet på IP. Liker bedre en løsning med en errorpage.

 

Ellers kan du jo generere en hash for å sjekke om du har dobbeltposter, evt. sjekke hele posten (kan være ineffektivt).

Lenke til kommentar

kan også lage en anti-bot...

1. Du lager en .txt fil med random tall på..(4 sifret)

2. Du leser filen og lager et bilde av det med php

3. Brukeren må skrive inn tallene fra bilde. Hvis feil gå til 1.

4. Du viser gjesteboken eller hva du måtte ønske..

 

ps! leste ikke tråden... bare svarte

Lenke til kommentar
  • 1 måned senere...

PHP
<body>

<p>Please enter the following word: "TEST" !:</p>

<form id="form1" name="form1" method="post" action="<?php $_SERVER['PHP_SELF'?>">

<label>

<input name='input' type='text' id="input" value="" size='30' maxlength='100' />

</label>

<p>

<label>

<input type="submit" name="post" id="post" value="Submit" />

</label>

</p>

</form>

<?PHP

 

$kode = ($_POST['input']);

$rett "test";

$rett2"TEST";

 

if (isset($_POST['post']))

{

 

if ($kode == $rett or $rett2) {

//Her kan du og bruke en redirect eller lignende, right? ;)

echo "WOW! You entered the correct word!";

}

else {

// :)

echo "FU n00b!";

 

echo "<br><br>";

print "You entered "$kode". That is NOT the correct word! Please try again!"

}}

 

?>

</body>

 

</html>

 

?

Endret av Yaricks
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...