| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
blockIps 0.2djh 15.02.05 18:22 Funktio, jolla voidaan erotella tietystä ip-osoitteesta tai ip-osoitealueelta tulevat pyynnöt. Jos et halua esim. jotain osaa www-sivusta näytettävän tietystä ip-osoitteesta tuleville kävijöille.
<?php /* Funktion parametrit: 1: $aip = ip-alueen alku muotoa '123.0.0.0' 2: $bip = ip-alueen loppu muotoa '123.255.255.255' tai tyhjä (jos kyseessä on vain yksittäinen ip, niin jätetään tyhjäksi) 3: $xip = verrattava ip-osoite muotoa '123.1.2.3' tai tyhjä (jollei anneta muuta, selvitetään kävijän ip) 4: $required = vaaditaanko ip-osoite vai ei, true tai false (siltä varalta ettei saada selville) Funktio palauttaa arvon TRUE jos ip-osoite on pakollinen ja se on saatu selville ja se EI täsmää annettuun vertailuosoitteseen tai EI ole annetulla osoitealueella. Omasta koodistasi on sitten kiinni mitä tällä tiedolla teet. Koodasi 15.02.2005 colaa nauttiessa "djh", versio 0.2 */ function blockIps($aip=false,$bip=false,$xip=false,$required=true) { // Selvitetään verrattava ip-osoite, jollei sitä ole annettu if (!$xip) { if (getenv("HTTP_CLIENT_IP")) { $xip = getenv("HTTP_CLIENT_IP"); } elseif (getenv("HTTP_X_FORWARDED_FOR")) { $xip = getenv("HTTP_X_FORWARDED_FOR"); } elseif (getenv("REMOTE_ADDR")) { $xip = getenv("REMOTE_ADDR"); } else { $xip = false; } } // Osoitetta ei saatu selville, mutta se vaaditaan = EI! if ($required && !$xip) { return false; } // Osoitetta ei saatu selville, mutta sitä ei vaadita = OK! elseif (!$required && !$xip) { return true; } // Ip-osoite selvitetty ja vertailukohtana on yksittäinen osoite if ($xip && $aip && !$bip) { $xip = sprintf('%u', ip2long($xip)); $aip = sprintf('%u', ip2long($aip)); // Annetut osoitteet ei täsmää = OK! if ($xip!=$aip) { return true; } } // Ip-osoite selvitetty ja vertailukohtana on määrätty ip-osoitealue elseif ($xip && $aip && $bip) { $xip = sprintf('%u', ip2long($xip)); $aip = sprintf('%u', ip2long($aip)); $bip = sprintf('%u', ip2long($bip)); // Osoite ei ole alueella = OK! if ($xip<$aip || $xip>$bip) { return true; } } // Oletuksena = EI! return false; } ?> djh 21:10 15.2.05 Pelkkään ip-osoitteiden blokkaukseen on olemassa yksinkertaisempiakin keinoja, esim. htaccess. Tämän skriptin taustalla on kuitenkin tarve hoitaa blokkaus hienovaraisemmin eli esimerkiksi esittää www-sivulla eri sisältö osalle kävijöistä ilman että he itse huomaavat menettävänsä mitään ko. sivun sisällöstä. Esimerkki tällaisesta käytöstä voisi olla vaikkapa yrityksen sivu, jossa tiedetään kilpailevan yrityksen käyttämä kiinteä ip tai ip-alue ja halutaan näyttää heille vain osa sivuston sisällöstä. Toki mikään aukoton ratkaisu tämä ei ole, eikä siis sovellu oikeisiin tietoturvaratkaisuihin, mutta joissain tapauksissa näppärä. Oletetaan vaikkapa, että kilpailijan työntekijä käy yrityksesi sivuilla työpaikaltaan eikä blokkauksen ansiosta huomaa, että häneltä pimitetään tietoa, joten tuskin hän lähtee kotikoneellaan sivuja tarkastamaan. Mitään huippusalaista tällä ei kätketä, mutta ihan kilpailijan "vakoilun" hankaloittamiseksi tätä voinee soveltaa. Toki salattavat tiedot voisivat olla salasanasuojatussa hakemistossa, mutta jos taas haluat että ne ovat potentiaalisten asiakkaidesi sataavilla helposti, se ei tule kyseeseen. Blokattavat ip-osoitteetkin voivat tässä tapauksessa olla ihan yksittäisiä kiinteitä ip:itä, joten sen vuoksi tässä käpistellään osoitteita näinkin tarkasti eikä summittaisesti kaikki 192.168-alueen osoitteet blokaten, joka olisi helpompi tapa. Koodi on tarkoituksella funktion muodossa, jolloin sen liittäminen osaksi omaa koodia on helppoa. |
![]() Haku
|