27 votes

.htaccess / .htpasswd bypass si, à une certaine adresse IP

Est-il possible d'avoir un .htaccess/.htpasswd de contrôle d'accès de configuration pour un répertoire donné, mais si elles le sont à partir d'une adresse IP spécifique, contourner le login/mot de passe d'authentification?

Je sais que vous pouvez faire quelque chose comme cela dans la .fichier htaccess:

order deny,allow
deny from all
allow from 000.000.000.000

Mais si vous ajoutez quelque chose le long de ces lignes:

AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/.htpasswd
require valid-user

Puis il demande le mot de passe. Est-il possible de faire un if/else type d'installation, ou une autre solution pour que les utilisateurs comme une IP donnée (ou un ensemble de IPs) n'obtenez pas invité à entrer un mot de passe, mais tout le monde le fait?

44voto

j5Dev Points 1023

Pour les versions 2.2.X vous pouvez utiliser ce qui suit...

AuthUserFile /var/www/mysite/.htpasswd
AuthName "Please Log In"
AuthType Basic
require valid-user
Order allow,deny
Allow from xxx.xxx.xxx.xxx
satisfy any

Évidemment remplacer le chemin d'accès à votre usersfile et l'adresse ip que vous souhaitez contourner l'authentification.

Plus d'explications sur les détails, peut être trouvé à: http://httpd.apache.org/docs/2.2/howto/auth.html

7voto

Seybsen Points 3301

Si vous utilisez apache >=2.4, il serait quelque chose comme ceci:

<If "%{REMOTE_ADDR} != 127.0.0.1">
  AuthType Basic
  AuthName "restricted area"
  AuthUserFile /path/to/.htpasswd
  require valid-user
</If>

Pour plus d'infos, jetez un oeil à la docs.

4voto

user1201232 Points 141

Je suis en cours d'exécution Apache/2.2.16 (Debian), et a eu un problème similaire, je l'ai résolu comme ceci:

(cette commande peut être exécutée de manière à la fois .fichier htaccess ou directement dans le virtualhost sous < Location / >

Order deny,allow
Deny from all
AuthType Basic
AuthUserFile /home/somesite/.htpasswd
AuthName "No entry, unless"
Require Valid-user
Allow from x.x.x.x
Allow from x.x.x.x
Satisfy Any

- Je le droit d'entrée avec un mot de passe à partir de deux ip différentes, et le reste doit entrer le mot de passe pour entrer.

2voto

hollodotme Points 21

En plus de la réponse de j5Dev:

# Interne IP-Adressen
SetEnvIf Remote_Addr "^127\.0\.0\.1$" IsIntern
SetEnvIf Remote_Addr "^192\.168" IsIntern
# .. add more IP addresses or ranges here

# Authentication, wenn nicht intern
AuthUserFile /path/to/.htpasswd
AuthName "restricted area"
AuthType Basic
require valid-user
Order allow,deny
Allow from env=IsIntern
satisfy any

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X