Restringir acceso a una web con usuario y dirección IP usando .htaccess

Septiembre 4, 2008 · Imprime esta entrada

Esta es una pequeña nota de un problema con el que me he topado el dia de hoy y antes de ponerme a duplicar páginas o a inventarme algunas lineas de código en PHP para restringir el acceso decidí investigar un poco como configurar el .htaccess para poder restringir el acceso a un directorio web y me encontre con una solucion fácil y sencilla.

La situación era esta. Necesitaba restringir el acceso a un directorio web de manera que si alguien accede a la URL desde la IP de la oficina le permita el acceso transparente, y si el acceso se realiza desde cualquiera de las IP no autorizada que solicite un usuario y una contraseña para poder acceder al contenido. Para poder lograr esta configuración el archivo .htaccess debe de estar alojado en la raíz del directorio que queremos (en este enlace encontraras más información sobre como habilitar el .htaccess)

El archivo .htacces queda de la siguiente forma:


AuthUserFile /var/www/website/subdir/.htpasswd
AuthName "Protected Site"
AuthType Basic
Require user usuario1 usuario2
Order allow,deny
Allow from xx.xx.xx.xx
Satisfy any

El truco esta en la instrucción “Satisfy any” que basicamente lo que hace es permitir el acceso al subdirectorio si se cumple al menos una de las condiciones que exigimos en el archivo .htaccess. Yo personalmente no lo conocía pero navegando un poco encontre la solución y la dejo aquí por si a alguien le hace falta o para futuras referencias propias, que siempre se me olvida como hacer este tipo de cosas.

(Howto restrict access to a website by IP and username using .htaccess)

Comentarios

2 respuestas a “Restringir acceso a una web con usuario y dirección IP usando .htaccess”

  1. miguelito el 12/09/2008 10:19 pm

    Ed, otra cosa que puedes hacer para aumentar la seguridad es no poner el fichero .htpasswd en un directorio web accesible por si acaso, Ej: AuthUserFile /opt/securedir/.htpasswd

    un comentario friki na mas….

  2. Pabo el 14/07/2009 3:25 am

    A no me funcionó del todo bien, seguía permitiendo el acceso desde fuera. Tuve que agregar al comiendo

    Order deny,allow
    Deny from all

    Además, para permitir el acceso desde localhost tuve que poner
    Allow from 192.168.0.0/24 #dominio
    Allow from ::1 #localhost

    Un saludo…

¿Quieres dejarnos tu opinión?