Vamos a analizar en este tutorial y siguientes el archivo .htaccess, veremos en que puede mejorar su sitio web.
El archivo .htaccess puede cambiar las configuraciones del servidor Apache para permitir realizar varias cosas, una de ella es poder tener tu propia página de error 404, proteger carpetas con contraseñas, redirigir usuarios automáticamente, cambiar las extensiones de un archivo, autorizar usuarios con una determinada IP, usar archivo distinto a index como archivo index, etc.
El archivo .htaccess
Lo primero es añadir las lineas adecuadas al archivo en el directorio que queremos proteger, todos los subdirectorios también estarán protegidos.
Según Apache el archivo sera asi:
AuthType Basic
AuthName "Zona privada"
AuthUserFile /www/contraseñas/.htpasswd
Require valid-user
La primera linea se deja igual, la segunda se le pone el nombre de la parte que quieres proteger, la tercera es la ruta completa hacia donde esté el archivo .htaccess y la cuarta la puedes cambiar por Require user nombre siendo nombre el nombre del usuario contenido en el archivo .htpasswd
Comandos de .htaccess.
Páginas de error 404 personalizadas.
Cuando un archivo no es encontrado el explorador devuelve una página de error, con .htaccess podemos crear nuestra propia página de error y que se muestre al usuario de forma que la apariencia del sitio mejora en calidad. Además te permite crear un script para notificarte si hay un error, se puede usar en conjunción con PHP y que envie un correo si una página no es encontrada.
Se pueden usar páginas de error de todas las numeraciones mas comunes:
401- Se requiere autorización
400-
403- Prohibido
404- Página erronea
500- Error interno del servidor
Solamente tienes que añadir a tu archivo .htaccess lo siguiente:
ErrorDocument número_de_error/ruta/archivo.html
Por ejemplo si el archivo lo tienes en el directorio raiz de tu sitio seria:
ErrorDocument 404/noencontrada.html
A continuación lo único que tienes que crear es un página de error llamada noencontrada.html
No mostrar el Directory Index
Algunas veces en nuestro sitio por la razón que sea no tenemos un archivo index en nuestro directorio, entonces si alguien escribe el nombre del directorio en el buscador se ofrecerá una lista de todos los archivos que hay en ese directorio, evidentemente es un problema de seguridad importante.
Para prevenir esto, sin tener que crear un montón de archivos index, se puede crear un comando el el archivo .htacces para que no muestre el listado de archivos del directorio.
Este comando es: Options -Indexes
Denegar o permitir ciertas direcciones IP
Algunas veces queremos solamente que acedan al sitio determinadas direcciones IP o a un directorio determinado, esto lo realizamos con la directiva siguiente.
Bloquear una IP: deny from 168.134.225
Autorizar una IP: allow from 168.134.225
Denegar el acceso a todo el mundo: deny from all
La redirección
Es una función muy util es redirigir requerimientos a diferentes archivos, dentro del propio servidor o externos:
Redirect /location/from/ruta/archivo.html
http://www.otrositio.com/nuevaruta/file/location.xyz
El proteger directorios en sitios web es uno de los usos mas apreciados del archivo .htaccess, aunque JavaScript,php,etc pueden realizar la misma función solo .htacces tiene total seguridad dado que no hay "puertas traseras".
Crear un archivo .htaccess
La creación de este archivo puede causar verdaderos quebraderos de cabeza, escribirlos no tiene problema con el note pad o cualquier editor de texto, el problema viene cuando queremos guardar el archivo creado porque es un archivo un poco diferente, en realidad no tiene nombre pero si una extensión de 8 letras y algunos S.O. no los aceptan.
En principio lo que hay que hacer es guardar el archivo escribiendo el nombre como: ".htaccess" incluidos las comillas. Si asi no funciona lo guardas llamandolo con la extensión txt, es decir htaccess.txt y lo subes al servidor, una vez en el servidor lo renombras con un programa FTP.
NOTA: Tienes que guardarlo en la mismo directorio que quieres proteger
Configurar Apache para usar .htaccess
Un fichero .htacess es un archivo de texto que contiene directivas de Apache, estas directivas se aplican a los documentos en el directorio donde esté localizado el archivo .htaccess y todos los subdirectorios debajo de el.
Como es un archivo de texto puedes usar el editor de textos que quieras para crear o realizar cambios en un archivo .htaccess.
El nombre le viene de "ht" por hypertext y si quieres puedes cambiarlo de nombre en el archivo de configuración de Apache, http.conf, de forma que quede asi:
#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives. See also the AllowOverride
# directive.
#
AccessFileName ht.acl
Esto hace que Apache busque archivos llamados ht.acl en vez de .htaccess
Cuando Apache busca archivos .htaccess empieza por la parte superior del arbol de archivos, en windows por el directorio raiz C:\ y continua hacia abajo de la siguiente forma:
C:\.htaccess
C:\Program Files\.htaccess
C:\Program Files\Apache Group\.htaccess
C:\Program Files\Apache Group\Apache\.htaccess
C:\Program Files\Apache Group\Apache\htdocs\.htaccess
C:\Program Files\Apache Group\Apache\htdocs\foo\.htaccess
C:\Program Files\Apache Group\Apache\htdocs\foo\bar\.htaccess
C:\Program Files\Apache Group\Apache\htdocs\foo\bar\gritch\.htaccess
Este procedimiento de búsqueda lo ejecuta cada vez que que el archivo es requerido, es decir mucha carga de trabajo!!
Aqui tienes un enlace para la creación rápida de ficheros .htaccess y un ejemplo de como son.
http://www.clockwatchers.com/htaccess_tool.html
Options +Indexes
IndexOptions -FancyIndexing
AuthUserFile C:/Apache2/htdocs/protegido/.htpasswd
AuthGroupFile /dev/null
AuthName "Zona Privada"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>
Si queremos utilizar archivos .htaccess con el servidor Apache con sistema operativo Windows hay que configurar el fichero httpd.conf.
Buscamos:
#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives. See also the AllowOverride
# directive.
#
AccessFileName .htaccess
Y comprobamos que no está comentado # el nombre del archivo en donde Apache buscará las directivas para establecer derechos y usuarios sobre los directorios, es decir AccessFileName .htaccess además, cada directorio en el que quieras establecer seguridad, debe tener un archivo .htaccess ya que de aquí toma las restricciones que aplicará sobre ese directorio en particular.
Buscamos luego:
#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
# You must correct the path for the root to match your system's configured
# user directory location, e.g. "C:/WinNT/profiles/*/My Documents/My Website"
# or whichever, as appropriate.
#
#<Directory "C:/Documents and Settings/*/My Documents/My Website">
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS PROPFIND>
# Order allow,deny
# Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS PROPFIND>
# Order deny,allow
# Deny from all
# </LimitExcept>
#</Directory>
Quitamos los comentarios de <Directory cambiando la ruta "C:/Documents and Settings/*/My Documents/My Website" con la ruta real en tu disco duro de donde se encuentra el archivo .htaccess que es el directorio que quieres proteger.
#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
# You must correct the path for the root to match your system's configured
# user directory location, e.g. "C:/WinNT/profiles/*/My Documents/My Website"
# or whichever, as appropriate.
#
<Directory "C:/Apache2/htdocs/protegido">
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
Guardamos la nueva configuración y reiniciamos el servidor Apache para que los cambios tengan lugar y puedas usar los ficheros .htaccess en los directorios que quieras.
Puede utilizar este Tutorial libremente, pero sin fines comerciales y siempre debe indicar la fuente de autoría.
|