webForumDet fria alternativet

IP Block

3 svar · 733 visningar · startad av muRum

muRumMedlem sedan juni 20109 inlägg
#1

Hallå.
Jag har skrivit litegrann här förut om en gästbok som nu ligger i php.

Jag vill ha spamskydd till min gästbok som självklart kan förstå!. Något sorts spamskydd är ju ett måste!

Jag tänkte integrera ett IP spamskydd som lagrar IP och sedan kollar upp så att en med samma ip kan skriva max 2gånger i minuten d.v.s en blocktime på 30sekunder.

För att få tag på den som postade använder man följande? Ja/Nej?

$ip = $_SERVER['REMOTE_ADDR'];

Error meddelande tänkte jag koppla såhär:

if($ipfel){
echo "Samma IP. Vänta 30 sekunder från ditt förra meddelande";
}

d.v.s att

$ipfel = $datetime + 30sekunder för lastpost för $ip.

Någonting sådant?
Hur ska man skriva det så att mySQL förstår vad jag syftar på?

Har ni frågor skriv bara så förklarar jag mer hur jag menar. Men ni förstår säkert!

aasahMedlem sedan mars 20034 471 inlägg
#2

Hmmm... är det verkligen en bra idé att bygga spamskyddet så? Ett alternativ skulle vara att använda sessioner på gästbokssidan och lagra tidpunkten för senaste post i en sessionsvariabel. Då kan du, med hjälp av PHP direkt kontrollera mot sessionsvariabeln om det har gått 30 sekunder (eller vad helst annan tid du vill) innan postningen går igenom.

Annars kan oväntade(?) problem uppstå. Dels finns numera speciella inställningar i vissa program som helt rensar IP-infon, dels stoppas ingen som surfar från AOL. AOL har nämligen den - för webbprogrammerare - irriterande vanan att hela tiden skicka ett annat ip-nummer än nyss, för varje ny sidladdning. Alltså samma person som surfar får hela tiden ett nytt "tal" i den sista delen av ip-nr:et. Däremot kan en annan surfare på AOL lätt få det ip-nummer din spammare använde nyss och därför stoppas från att posta alls.

Därför är det antagligen bättre att ta infon från en sessionsvariabel.

För att få tag i den som postade (vilket du kanske vill lagra med inlägget under alla omständigheter) använder jag:

// Try to get the correct remote IP-address.  - funktion från wF!
function getRemoteAddress() {
   // If HTTP_X_FORWARDED_FOR is set we grab the first address in the list
   if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
      if (preg_match("/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/",
                     $_SERVER['HTTP_X_FORWARDED_FOR'], $addresses))
         return $addresses[0];
   }
   // If no address was found in HTTP_X_FORWARDED_FOR, we try HTTP_CLIENT_IP
   // and if that isn't set we return REMOTE_ADDR
   elseif (isset($_SERVER['HTTP_CLIENT_IP'])) return $_SERVER['HTTP_CLIENT_IP'];
   else return $_SERVER['REMOTE_ADDR'];
}

Om du hittar 10 inlägg som säger att sidan är skräp kan det ju vara intressant att se att de kommer från samma IP...

GunnarDMedlem sedan juni 20014 290 inlägg
#3

aasah skrev:

Dels finns numera speciella inställningar i vissa program som helt rensar IP-infon

Har svårt att se hur detta skall fungera, tar man bort "ip-infon" så har webservern ingen adress att skicka tillbaka information till. Om du menar anonymitetstjänster så döljer dom din riktiga ip-adress istället får man en "anonym" ip-adress som tillhör någon annan.

När det gäller så korta tider som 30 sekunder så kan man mycket väll blocka ip-adressen (den är ju bara spärrad i 30 sekunder).

aasahMedlem sedan mars 20034 471 inlägg
#4

GunnarD skrev:

Har svårt att se hur detta skall fungera, tar man bort "ip-infon" så har webservern ingen adress att skicka tillbaka information till. Om du menar anonymitetstjänster så döljer dom din riktiga ip-adress istället får man en "anonym" ip-adress som tillhör någon annan.

:q Jag kanske minns fel, men jag har för mig att jag någongång kammat noll på IP-adress? Inte säker på det dock.

GunnarD skrev:

När det gäller så korta tider som 30 sekunder så kan man mycket väll blocka ip-adressen (den är ju bara spärrad i 30 sekunder).

Jo, det större problemet är att personer som använder AOL för att surfa inte får något spam-block alls i praktiken. Hur stort problemet nu är... det beror ju på hur många besökare som använder AOL...

126 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)