Ország szerinti engedélyezés / tiltás .htaccess fájl segítségével

A W3HOST wiki wikiből

Ország szerinti engedélyezés / tiltás .htaccess fájl segítségével

Miért lehet erre szükségem?

Főleg fórum, blog, közösségi oldal üzemeltetőknek merül fel elsőként ez az igény. Amint az oldalt megismerik/felismerik a támadók, hamis regisztrációk sokaságával támadják az oldalt. Céljuk, hogy reklámszöveget, linket helyezzenek el az oldalon, hogy például a keresőmotorok találati listájában előnyösebb helyezést érjenek el, vagy vírusos kódrészleteket tartalmazó linkjeiket terjesszék.


Hogyan védekezhetünk az ilyen támadások ellen?

  • Egyik módja lehet, hogy úgynevezett [CAPTCHA] kódot helyezünk el a szövegbeviteli mezők, regisztrációs oldal alá, ami lehetetlenné teszi az automatizált, gépesített adatküldést. Ajánlatos a [reCAPTCHA] használata, ami egyben elősegíti a könyvek digitalizálást is, és megbízható, állandóan továbbfejlesztett kódot generál (ne lehessen automatizáltan kiolvasni a kódot).
  • Ha a fenti megoldás nem elegendő, és behatárolható azon országok száma, ahonnan látogatókat várhatunk, használhatjuk az Apache webszerver GeoIP modulját is.


Hogyan működik a GeoIP modul?

A mod_geoip modul elemzi a weboldal látogató IP címét, és adatbázisa alapján három környezeti változó értéket állít be:

  • GEOIP_CONTINENT_CODE (például: EU)
  • GEOIP_COUNTRY_CODE (például: HU)
  • GEOIP_COUNTRY_NAME (például: Hungary)

A környezeti változók értékét felhasználva engedélyezhetjük / tilthatjuk például a regisztrációt a php szkriptekben. Lehetőség van .htaccess fájlban is szabályozni fájlok, könyvtárak, sőt az egész weboldal elérhetőségét.

Példák a .htaccess szabályozásra

1.) Csak a megadott országokra engedélyezzük a teljes weboldal látogathatóságát:

 <IfModule mod_setenvif.c>
 
    SetEnvIf GEOIP_COUNTRY_CODE HU AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE DE AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
    # további országokat is megadhatunk
 
    Deny from all
    Allow from env=AllowCountry
 
    # Ha a tiltott országból mégis szeretnénk IP címeket engedélyezni
    Allow from 1.2.3.4
 </IfModule>


2.) A megadott országokat tíltjuk a teljes weboldalra vonatkoztatva:

 <IfModule mod_setenvif.c>
 
    SetEnvIf GEOIP_COUNTRY_CODE HU DenyCountry
    SetEnvIf GEOIP_COUNTRY_CODE DE DenyCountry
    SetEnvIf GEOIP_COUNTRY_CODE US DenyCountry
    # további országokat is megadhatunk
 
    Deny from env=DenyCountry
 
    # Ha a tiltott országból mégis szeretnénk IP címeket engedélyezni
    Allow from 1.2.3.4
 </IfModule>


3.) Csak egy speciális fájlt tiltunk el a megadott országoktól:

 <Files registration.php>
  <IfModule mod_setenvif.c>
 
     SetEnvIf GEOIP_COUNTRY_CODE HU DenyCountry
     SetEnvIf GEOIP_COUNTRY_CODE DE DenyCountry
     SetEnvIf GEOIP_COUNTRY_CODE US DenyCountry
     # további országokat is megadhatunk
 
     Deny from env=DenyCountry
 
     # Ha a tiltott országból mégis szeretnénk IP címeket engedélyezni
     Allow from 1.2.3.4
  </IfModule>
 </Files>