Een directory afschermen via een IP-adres

Je kent het wellicht wel: Je hebt een test omgeving waarop je aan het werk bent, maar steeds moet je je wachtwoord invoeren. Dit valt vrij eenvoudig te voorkomen door je test omgeving af te schermen met een .htaccess die afgeschermd is op basis van je IP-adres.

een-directory-afschermen-via-een-ip-adres.png

Een .htaccess is een bestand welke door de webserver Apache uitgelezen wordt voordat überhaupt de opgevraagde pagina wordt uitgelezen. Met een .htacces bestand zijn daardoor een hoop dingen mogelijk:

  • SEO urls - Het is mogelijk om bijvoorbeeld blog/april/blog-titel om te vormen naar blog.php?maand=april&titel=blog-title zonder dat de gebruiker er iets van ziet.
  • Verwijzingen - Een bezoeker van www.website.nl/oude-link wordt dan doorgestuurd naar www.website.nl/nieuwe-link
  • IP-adressen blokkeren - Vervelende bezoekers op je site? Met de .htaccess is niks meer mogelijk.
  • Verplicht downloaden - CSV bestanden die als voorbeeld op je website staan? Met de .htaccess kun je ervoor zorgen dat deze bestanden als download worden aangeboden ipv dat je meteen de inhoud ziet die niet heel duidelijk is.
  • Authenticatie - Ervoor zorgen dat een directory is afgeschermd met een gebruikersnaam en wachtwoord.

In deze tutorial gaan we er dus voor zorgen dat een map wordt afgeschermd en enkel toegankelijk is voor een aantal IP-adressen. Dit doen we door feitelijk dezelfde code te gebruiken als wanneer een map is afgeschermd met een wachtwoord:

  1. Order deny,allow
  2. Deny from all
  3. AuthName "Please say the magic word!"
  4. AuthUserFile /pad/naar/een/.htpasswd
  5. AuthType Basic
  6. Require valid-user

Nu wijst er hier een pad naar een .htpasswd bestand. Wanneer een map is afgeschermd met een wachtwoord staan in dit bestand de gebruikers en het bijbehorende wachtwoord. Wanneer er niks in dit bestand staat, of het bestand zelfs niet bestaat zal je dus nooit toegang kunnen krijgen tot de map.

Nu gaan we dit script uitbreiden met de code die ervoor zorgt dat je vanaf andere IP-adressen ook toegang tot de map hebt. Let op: Dit is uiterst complexe code die ontzettend moeilijk in elkaar steekt! Deze code komt onder het vorige stuk:

  1. Allow from 123.123.123.123
  2. Allow from 127.0.0.1

Uiteraard kun je deze lijst uitbreiden met nog meer IP-adressen, zoveel als dat er nodig zijn. Liever ook de mogelijkheid bieden om gebruikers die niet in de lijst staan in de te laten loggen? Geen probleem: Zorg ervoor dat AuthUserFile bestaat. De inhoud van dit bestand kun je hier aanmaken