Mostrando entradas con la etiqueta htaccess. Mostrar todas las entradas
Mostrando entradas con la etiqueta htaccess. Mostrar todas las entradas

viernes, 21 de marzo de 2014

Limitar el acceso a una página web por IP mediante el fichero .htaccess

En la última entrada, os proponía como ejercicio cómo limitar el acceso a una aplicación web mediante el uso del fichero .htaccess (propio de Apache y otros servidores web imitadores) a determinadas direcciones IP. Bueno, por si alguno no lo ha sacado, es tan sencillo como añadir al fichero .htaccess unas líneas tal que así:

… otras cosas…

order deny,allow
deny from all
allow from 10.15.xx.yy
allow from 10.15.xx.zz
…
…


Si uno intenta acceder desde una dirección que no se encuentra en la lista, obtendrá un mensaje similar a este: 



Otra cosa que también puede interesar a veces es tener un subdirectorio, dentro del directorio de la aplicación web, en el que queramos tener información (ficheros de datos, configuración, imágenes…) pero no queramos permitir que nadie acceda a esos ficheros a través del navegador (accederemos nosotros mediante código). En esos casos, es suficiente con poner ahí un fichero .htaccess con una única línea:

Deny from all

En este caso, el mensaje sería algo similar a



Si os fijáis, aunque el número del error es el mismo (403), los mensajes de descripción son ligeramente diferentes. ¿Alguien sabe por qué?

En estos dos casos, el fichero .htaccess no necesita ir acompañado del fichero de usuarios / claves (que hemos llamado htpasswd durante estas explicaciones, aunque este no ha de ser necesariamente su nombre real)

jueves, 13 de marzo de 2014

Limitar el acceso a una página web mediante usuario y clave

Como ya dije en una entrada anterior, una forma de incrementar un poco la seguridad de nuestras aplicaciones web consiste en limitar el acceso a la página por diversos medios. En aquella entrada explicaba cómo restringir con PHP el conjunto de direcciones IP a las que permitimos la conexión, cosa que puede venir particularmente bien en entornos controlados (corporativos, nuestra red doméstica, académica…).

Otra posibilidad muy rápida de poner en marcha consiste en utilizar una pareja que se lleva muy bien entre sí: los ficheros HTACCESS y un fichero de usuarios / claves (HTPASSWD). Estos ficheros se popularizaron con el servidor web Apache, pero hay otros servidores web que también los utilizan, según he leído (yo sólo los he probado con Apache). El nombre del fichero .htaccess comienza por un punto (herencia de cómo se identificaban los ficheros ocultos en los primeros sistemas UNIX).

Aunque su contenido puede ser muy variado, yo me voy a limitar a explicar un uso básico. (Más info sobre este fichero en donde siempre: http://es.wikipedia.org/wiki/Htaccess)

En mi caso, los voy a utilizar tanto para autenticación como para autorización. Para ello, crearemos dos ficheros, de nombres .htaccess y un fichero de claves que puede llamarse como queramos, y al que me referiré como HTPASSWD (obsérvese el punto inicial en el nombre del primero). El nombre del segundo lo elegiremos a voluntad.

El fichero .htaccess se puede crear con cualquier editor de texto, y contendrá algo similar a:

 1 AuthName "Usuario de MiAplicación"
 2 AuthType Basic
 3 AuthUserFile "C:\tmp\miapp.users"
 4 require valid-user

La línea 3 indica cuál será el fichero de claves, con la lista de los usuarios permitidos. En este caso, los usuarios estarán en el fichero “miapp.users”, el cual podemos crear con la herramienta htpasswd.exe (en la carpeta bin dentro del directorio de instalación de Apache), mediante el comando:

htpasswd.exe -c <ruta>miapp.users <usuario>

Y a continuación teclear la clave que queremos para ese usuario.

Si queremos añadir usuarios adicionales, simplemente repetiremos el comando sin la opción “-c”


Cómo funciona

Cuando el usuario intente acceder a nuestra página, le aparecerá un mensaje para que introduzca el usuario y la contraseña. En el navegador Opera se ve así (otros navegadores mostrarán pantallas equivalentes):


Fijaos que la palabra con tilde se muestra mal. Esto se debe a que mi editor de texto codifica el fichero de texto con codificación UTF-8 y ya no sé si el problema está en cómo sirve el Apache ese mensaje (¿puede que esté configurado para servir las páginas en ANSI?), o en cómo lo visualizan los navegadores. Me inclino más por lo primero, ya que ese fallo de la tilde me ocurre en TODOS los navegadores en los que lo he probado (y he probado con Opera, IE, Firefox y Epiphany), pero como tampoco quiero extenderme más, aquí lo dejo por hoy.



Ejercicio adicional: El fichero .htaccess también se puede utilizar para limitar las IPs desde las que permitir las conexiones a nuestra página web. ¿Cómo se hace esto?
Related Posts Plugin for WordPress, Blogger...