Buenas a todos, hoy quiero enseñarles como protejer una carpeta o una web con autenticación, es decir poner datos de acceso para ver el contenido. Lo logramos mediante el .htaccess (hypertext access) que no es mas que un fichero que también nos permite definir diferentes directivas de configuración para cada directorio (con sus respectivos subdirectorios) sin necesidad de editar el archivo de configuración principal de Apache.
# /home/usuario1/directorio1/ --> Configuración 1 -> URLS semánticas o amigables (máximo dos niveles). # /home/usuario1/directorio2/ --> Configuración 2 -> Restricción, directorio privado. # /home/usuario2/directorio1/ --> Configuración 1 -> URLS semánticas o amigables (máximo cinco niveles). # /home/usuario2/directorio1/ --> Configuración 2 -> Denegar el acceso a un rango de IP's # #... # # ''/ruta/directorioX/'' --> Configuración x
Muchas ventajas se desprenden de los ejemplos listados anteriormente. En primer lugar cabe destacar que, las directas definidas en el .htaccess se reflejan instantáneamente en los directorios por lo que no es necesario reiniciar apache. Permite que distintos usuarios puedan fácilmente adaptar el servidor apache a sus necesidades, teniendo solo niveles medios de privilegio.
El fichero.htaccess ofrece un universo de posibilidades, detallamos a continuación los usos más frecuentes.
En muchos sitios he visto como proteger directorios web en un servidor Apache por medio de htaccess. El tema es que por defecto, en Apache, la directiva AllowOverride no la vamos a encontrar en none y con esta asignación el servidor va obviar el fichero htaccess, con lo cual nuestro mecanismo para proteger una carpeta no va a funcionar. Los estados que puede tomar la directiva AllowOverride son Authconfig, Fileinfo, Indexes, Limit, Options, All y none.
Podemos ver una explicación detallada del funcionamiento de cada uno aquí. Pero en cualquier caso, si lo que queremos es implementar un mecanismo de autenticación deberíamos usar la directiva AllowOverride con el valor Authconfig. Los pasos siguientes serían crear el fichero .htaccess en la carpeta a proteger con algo parecido a esto:
AuthUserFile /etc/apache/.htpasswd AuthType Basic AuthName "Sitio web restringido" require valid-user
Para crear el fichero con los logins:
htpasswd -c /etc/apache/.htpasswd miNombredeUsuario
Teniendo en cuenta sacar el fichero de credenciales fuera del directorio web y también afinar los permisos adecuadamente.
order allow,deny deny from [ESCRIBIR-IP] deny from [ESCRIBIR-IP] allow from all
# Habilitar el modulo RewriteEngine on RewriteBase / # No reescribir imágenes ni css (aunque se podría usar el tag <base> dentro del html) RewriteRule \.(css|jpe?g|gif|png)$ - [L] RewriteRule ^([a-z]{2})/([a-z\-0-9]+)/([a-z\-0-9]+)\.html$ /usuario/index.php?langCode=$1&view=$2&title=$3 [L] # Regla formada por 3 expresiones regulares sencillas, \.html$ agrega el sufijo.html # URLs de ejemplo # http://dominio.com/es/articulo/urls-amigables-htaccess.html # http://dominio.com/en/article/semantic-urls-htaccess.html
ErrorDocument 500 http://foo.example.com/debug/ ErrorDocument 404 /error/404.php ErrorDocument 401 /info.html ErrorDocument 403 "Hoy es navidad deja un rato Internet y ve a saludar a tu familia"
redirect 301 /directorioViejo/archivoVidejo.htm http://www.dominio.com/[NUEVA-URL]
Header set Cache-Control "public" Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT" Header unset Last-Modified
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://dominio.com$ [NC] RewriteCond %{HTTP_REFERER} !^http://dominio.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.dominio.com$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.dominio.com/.*$ [NC] RewriteRule.*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]
Options +FollowSymlinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]
Me complace anunciar la creación de esta útil herramienta (SquidStats), para el análisis y monitoreo…
La inteligencia artificial está revolucionando las industrias al automatizar tareas, predecir patrones y permitiendo tomar…
Uno de los grandes retos al que nos podemos enfrentar cuando una aplicación crece, es…
Percona Monitoring and Management (PMM) es una herramienta de código abierto para la supervisión y…
Qué es lo que deseo hacer en este capítulo? Básicamente un sonoff, quiero encender/apagar las…
Hace algunos meses estoy escuchando hablar del proyecto Home Assistant (HA). En palabras literales del…