Skip to content

Instantly share code, notes, and snippets.

Created March 4, 2012 17:33
Show Gist options
  • Save siffring/1974022 to your computer and use it in GitHub Desktop.
Save siffring/1974022 to your computer and use it in GitHub Desktop.
htaccess to password protect a specific server
# ----------------------------------------------------------------------
# Password protect staging server
# Use one .htaccess file across multiple environments
# (e.g. local, dev, staging, production)
# but only password protect a specific environment.
# ----------------------------------------------------------------------
SetEnvIf Host passreq
AuthType Basic
AuthName "Password Required"
AuthUserFile /full/path/to/.htpasswd
Require valid-user
Order allow,deny
Allow from all
Deny from env=passreq
Satisfy any
Copy link

This is a nice little trick for basic needs, but it's not very safe as it could easily be spoofed in a few basic steps:

  1. find the ip address of by using ping (example result IP:
  2. add a custom hostname to the hosts file pointing to this ip address: omgihazaccess
  3. open http://omgihazaccess in the browser
    Tada, no password required!

The other way around would be a little safer (require password in all cases, except when using production domain) but could still be spoofed if the attacked pointed the production hostname to the staging server ip address.

Copy link

@loekwetzels I think you're missing the vital line in there! This password protects the server, spoofing the domain name won't get around that, you'll still need to know the password.

Copy link

Hopefully this is help for my staging / development sites.

Copy link

@elliotlewis - Unfortunately I think that @loekwetzels is right. If you put to your hosts file a record as he describes, then SetEnvIf Host returns FALSE, so env variable won't be passreq. Because my host is omgihazaccess (from @loekwetzels example).

Copy link

I think @jan-vodila and @loekwetzels are right. Probably not a good solution for anything seriously important

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment