WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   PHP Blockera IP (https://www.wn.se/forum/showthread.php?t=1049483)

klein 2011-08-12 06:19

PHP Blockera IP
 
Jag vill blockera IP, men dock hela segment av IP adresser, då problemet i fråga hoppa mellan olika ip Adresser. Så jag vill blockera all trafik från 199.15.234.*

Den kod jag har labbat med är , men den fungera inte särskilt bra. Alltså det jag vill göra, finns förekomst av199.15.234 i REMOTE_ADDR få true annars false.

<?
$block_ip = "199.15.234";

if ( strpos( $_SERVER["REMOTE_ADDR"], $block_ip ) == 0 ) {


print "BLOCK";

} else {
print "ok";
}
?>

Vad gör jah för fel?

foks 2011-08-12 08:12

Testa med "=== 0" istället för "== 0". Jag gissar att php jämställer false och 0.

Vill du vara snällare mot servern blockerar du ip-nummer med .htacess istället för med php.

captaindoe 2011-08-12 09:15

Ett sätt du kan lösa detta problem är att explodera ip adressen på "." . Då kan du enkelt jämföra med din ip adress.
Exempel:

Jag försöker gå på sidan med IP: 199.15.235

Om du exploderar min ip så blir [0] = 199, [1] = 15 [2] = 235.

Då kan du enkelt köra en loop.

PHP-kod:

if($exploded[0] == "199") {
//ok ip adressen är 199. Han kan vara bannad

   
if($exploded[1] == "15") {
      
// troligare att han är bannad

       
if($exploded[2] == "234") { 
        
// japp den här grabben är bannad och ska inte få vara här
       
}
    }
} else {
// Jag kom in på sidan eftersom jag var inte bannad. Jad hade ju up 199.15.235, och inte 199.15.234.


ett annat sätt som är med mindre if statements är ju följande.

PHP-kod:

if($exploded[0] == "199" && $exploded[1] == "15" && $exploded[2] == "234") {
// bannad
} else {
//ok



tartareandesire 2011-08-12 10:26

Citat:

Ursprungligen postat av foks (Inlägg 20414287)
Testa med "=== 0" istället för "== 0". Jag gissar att php jämställer false och 0.

Vill du vara snällare mot servern blockerar du ip-nummer med .htacess istället för med php.

Stämmer, man ska aldrig använda vanliga lika med när det gäller strpos.

klein 2011-08-12 13:55

Exempel på sådan .htacess? Antaligen bäst är att blockera med en loka brandvägg

Citat:

Ursprungligen postat av foks (Inlägg 20414287)
Testa med "=== 0" istället för "== 0". Jag gissar att php jämställer false och 0.

Vill du vara snällare mot servern blockerar du ip-nummer med .htacess istället för med php.


pelmered 2011-08-12 14:11

Citat:

Ursprungligen postat av klein (Inlägg 20414336)
Exempel på sådan .htacess? Antaligen bäst är att blockera med en loka brandvägg

Det bästa är helt klart att göra det i webbservern eller i brandväggen såvida det är något som ska hämta blockeringar ifrån en databas.

Har du det här i din .htaccess-fil blockeras 199.15.234.*(alla IP:n mellan 199.15.234.0 och 199.15.234.255) och 199.15.235.21:

Kod:

order allow,deny
deny from 199.15.234.
deny from 199.15.235.21
allow from all


fabian 2011-08-12 14:40

Ja att göra det i .htaccess låter vettigast...

Annars finns det gott om träffar i google som beskriver hur du blockerar IP med wildcards...

http://perishablepress.com/press/200...sses-with-php/

klein 2011-08-13 11:09

Den kan vara riktigt vettig lösning. Fundera på att aktivera brandväggen i ubuntu, men det finns risker men det också, att skriver fel regel och sedan har man sönder SSH accessen till serven. Det är inte kul att konsol koppla maskinen..


Citat:

Ursprungligen postat av ITisGood.se (Inlägg 20414340)
Det bästa är helt klart att göra det i webbservern eller i brandväggen såvida det är något som ska hämta blockeringar ifrån en databas.

Har du det här i din .htaccess-fil blockeras 199.15.234.*(alla IP:n mellan 199.15.234.0 och 199.15.234.255) och 199.15.235.21:

Kod:

order allow,deny
deny from 199.15.234.
deny from 199.15.235.21
allow from all



klein 2011-08-13 12:47

Finns det något sätt i .htaccess att skicka besökare från blockad IPn vidare till php script?

Citat:

Ursprungligen postat av klein (Inlägg 20414411)
Den kan vara riktigt vettig lösning. Fundera på att aktivera brandväggen i ubuntu, men det finns risker men det också, att skriver fel regel och sedan har man sönder SSH accessen till serven. Det är inte kul att konsol koppla maskinen..



Alla tider är GMT +2. Klockan är nu 21:04.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson