Htaccess-beveiligde mappen

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Regelmatig maak ik gebruik van .htaccess om mappen met een wachtwoord te beveiligen. Het doel is om bots buiten de deur te houden, en om een eenvoudige privacy-gerelateerde drempel op te werpen. Dit artikel is beperkt tot deze use case.

Hoe het werkt

Bepaal pad naar .htpasswd-bestand

Alle wachtwoorden worden in één .htpasswd-bestand opgeslagen, dat bij voorkeur buiten de boom staat wat door de webserver geserveerd wordt.

Locatie die ik hanteer:

/var/.htpasswd

Genereer hash

Voeg inlognaam-wachtwoord toe aan .htpasswd

Als er al een .htpasswd-bestand is: De gegenereerde regel toevoegen. Anders een nieuw bestand aanmaken met die ene regel als inhoud (zie elders voor details).

Dit is een voorbeeld van een .htpasswd-bestand met twee loginnaam-wachtwoord-combinaties:

testsite:vP1G4AlavcJho
wittekippen:./FRbXa69pKmk

Als je voor meerdere sites dezelfde loginnaam-wachtwoord-combinaties gebruikt (dat heb ik vaak, omdat ik alleen een simpele drempel behoef), dan heb je maar één regel in het .htpasswd-bestand nodig.

.htaccess-bestand aanmaken

Maak een .htaccess-bestand aan in de root van de betreffende site (bv. /var/www/example.com/.htaccess). Voorbeeld:

AuthName "I am so glad that you are here"
AuthType Basic
AuthUserFile /var/.htpasswd
require valid-user

Hostconfiguratie-bestand moet correct zijn

In het bestand waarin je voor Apache een domeinnaam specificeert, moet toegestaan worden dat je middels .htaccess mappen beveiligt. Ik geloof dat het gaat om de regel Require all granted:

<Directory /home/flup/public/example.com/public>

   AllowOverride All
   Require all granted
   RewriteEngine on
   RewriteBase /
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

</Directory>

Deny from all (feb. 2019)

In 2019 had ik een onwillige WordPres-Updraft-map. Daarin stond een .htaccess-bestand met alleen de tekst deny from all.

Wellicht zou dit beter zijn geweest (apache 2.2):

order deny,allow
deny from all
allow from 127.0.0.1

Of misschien dit voor Apache 2.4?

Require local

Bronnen