TOOL

.htpasswd generator

Genereer een werkende .htpasswd-regel voor basic-auth bescherming. Voer username + wachtwoord in → krijg de bcrypt-hash én de bijbehorende .htaccess-config klaar om te kopiëren. Voor het beschermen van /wp-admin/ met een extra wachtwoord-laag, een staging-omgeving afschermen, of een private documenten-map.

← Alle tools
Op welke server / hoster draait je site?
Gebruikers
Hash-format en realm
Hash-format

Wanneer gebruik je een .htpasswd?

Basic-auth via .htpasswd is de simpelste manier om een directory of hele site achter een wachtwoord te zetten — bovenop welke andere login-systeem dan ook. Browser-popup, klaar in 5 minuten. Concrete situaties:

  • WordPress wp-admin extra beschermenVoeg een tweede laag toe vóór de WP-login. Brute-force-bots geven 't op nog vóór ze WordPress überhaupt zien.
  • Staging-omgeving afschermenTest-versie van de site mag niet in Google — basic-auth voorkomt indexering en ongewenste bezoekers.
  • Private documenten-mapEen /klanten/ directory met PDF's of facturen die alleen klanten met inloggegevens zien.
  • Tijdens hack-recoverySite is gehackt? Plak basic-auth ervoor zodat je zonder bezoekers kunt onderzoeken én geen verdere infectie aanstaande is.
  • Admin-tools afschermenphpMyAdmin, Adminer, of een eigen dashboard — nooit publiek zonder extra wachtwoord-laag.

Hoe gebruik je de output?

  • .htpasswd Het hash-bestand. Plaats buiten je webroot — bv. één niveau boven public_html. Anders kan iemand het bestand downloaden via een URL.
  • .htaccess De config die zegt: "voor deze directory, vraag de gebruiker eerst om in te loggen". Plaats in de te beschermen map.
  • AuthUserFile-pad Vervang /pad/naar/.htpasswd in de gegenereerde .htaccess met het volledige absolute pad naar je echte .htpasswd-bestand op de server.
  • Realm-naam De tekst die in de browser-popup verschijnt — pas aan naar iets duidelijks zoals "Klanten-portal" of "Staging-omgeving".

Wat ik vaak tegenkom

.htpasswd staat publiek bereikbaar. Klant had het bestand in public_html gezet. Een eenvoudige https://klantsite.nl/.htpasswd downloadde de hashes. Met een simpele bcrypt-cracker had iemand binnen een uur de password. Fix: verplaats één niveau hoger, buiten de webroot.

Apache MD5 i.p.v. bcrypt op een nieuwe site. Bcrypt-hashes zijn ~10.000× langzamer te kraken dan Apache MD5. Voor nieuwe installaties is er geen reden meer om Apache MD5 te kiezen — tenzij je op een Apache <2.4 zit, wat in 2026 nog maar zelden gebeurt.

AuthUserFile met relatief pad. Werkt nooit. Apache vereist een absoluut pad naar het .htpasswd-bestand. Klant had AuthUserFile .htpasswd staan en kreeg overal 500-errors.

Veelgestelde vragen

Wat is .htpasswd en wanneer gebruik je het?

.htpasswd is een tekstbestand met username:password-paren waar Apache (en Nginx) basic-auth tegen valideert. Gebruik je vaak om een directory met een extra wachtwoord-laag te beschermen — bijvoorbeeld /wp-admin/ of een staging-omgeving.

De combinatie .htaccess + .htpasswd voegt een browser-popup toe waar bezoekers eerst doorheen moeten vóórdat ze de site bereiken.

Bcrypt of Apache MD5 — wat is het verschil?

Bcrypt ($2y$) is veel veiliger — het is intentioneel langzaam (~100ms per hash) en daardoor moeilijker te brute-forcen. Apache 2.4 ondersteunt bcrypt sinds 2012.

Apache MD5 ($apr1$) is het Apache-eigen format dat htpasswd standaard gebruikt — werkt overal maar is gebaseerd op MD5 + iteraties, minder veilig.

Voor nieuwe installaties: kies bcrypt. Alleen als je op een echt-oude Apache zit (<2.4) heb je $apr1$ nodig.

Waar moet ik het .htpasswd-bestand plaatsen?

Bij voorkeur BUITEN je webroot — dus één directory boven public_html (bv. /home/user/.htpasswd i.p.v. /home/user/public_html/.htpasswd).

Anders kan iemand het bestand mogelijk downloaden via https://jouwsite.nl/.htpasswd en zien welke usernames er zijn (de hashes zelf zijn moeilijk te kraken, maar usernames zijn al een lek).

In je .htaccess pas je het AuthUserFile-pad aan zodat het naar de echte locatie wijst.

Wordt mijn wachtwoord ergens opgeslagen?

Nee. De tool stuurt je wachtwoord via HTTPS naar /tools/api.php voor het hashen (bcrypt en Apache MD5 vereisen server-side berekening), en het resultaat wordt direct teruggestuurd. Er wordt niets gelogd, niets opgeslagen, niets gedeeld.

Wil je nul-vertrouwen? Gebruik dan htpasswd op je eigen server:

htpasswd -nbB username wachtwoord
Wat doe ik in Plesk of cPanel?

Plesk: plak de .htaccess-regels via "Apache & nginx Settings" (niet via FTP, anders overschrijft Plesk ze). Het .htpasswd-bestand zelf upload je via File Manager.

cPanel: heeft een ingebouwde "Directory Privacy"-tool die dit automatisch doet — aanrader.

DirectAdmin: gebruikt /domains/jouwdomein.nl/.htpasswds/ als standaard locatie.

Werkt dit ook op Nginx?

Het .htpasswd-format is universeel — zelfde bestand werkt op Apache en Nginx. Het verschil zit in de configuratie: in nginx.conf gebruik je auth_basic en auth_basic_user_file directives in plaats van .htaccess-regels.

Een nginx-snippet voor basic-auth staat in mijn snippet-bibliotheek.

Hoe combineer ik dit met IP-whitelisting?

Met Require-directives kun je één van twee modes kiezen:

  • OF-modus (toegang als één van beide klopt): IP-whitelist óf basic-auth
  • EN-modus (beide moeten kloppen): zowel IP-whitelist én basic-auth

OF-modus voor wp-admin (kantoor IP zonder login + basic-auth voor anderen):

<RequireAny>
    Require ip 81.123.45.67
    Require valid-user
</RequireAny>

Gerelateerd