.htaccess – No permitir que se ejecute código PHP en un directorio

23 Febrero 2009

Usando Apache como servidor web, si por alguna necesidad no queremos que se ejecute código PHP en un directorio de nuestro servidor debemos añadir la siguiente directiva al fichero .htaccess del directorio:

php_value engine off


.htaccess – Limitar los tipos de ficheros que pueden subirse (upload)

20 Febrero 2009

Si queremos que no se puedan subir (upload) un tipo (o varios tipos) de ficheros a nuestro servidor o a un directorio específico, tenemos que crear (o modificar) el archivo .htaccess (el principal o el de un directorio en particular).

Por ejemplo, imaginad que solo queremos que se puedan subir archivos jpg:

AddType image/jpeg .jpg

Si ahora solo queremos subir ficheros de tipo htm y/o html:

AddType text/plain .htm .html


.htaccess: Evitar mostrar el contenido de un directorio (carpeta)

14 Enero 2009

Cuando solicitamos un determinado fichero a un servidor Apache desde un navegador web, en caso de que el servidor no lo encuentre, automáticamente (y por defecto) nos mostrará un listado del directorio (carpeta), y nos permitirá navegar por dicho directorio y/o acceder a los ficheros que contenga.

Este comportamiento no es muy seguro, porque estamos permitiendo ver nuestra estructura de directorio y su contenido a cualquiera, es por lo que es muy recomendable deshabilitarlo.

Esto se consigue añadiendo la siguiente directiva al fichero .htaccess de nuestro directorio que queremos proteger:

Options -Indexes


.htaccess: Denegar acceso por dirección IP

9 Enero 2009

Podemos denegar el servicio, desde nuestro servidor Apache, a una dirección IP o aun rango de ellas, o bien permitirlo.

Para ello modificaremos el fichero .htaccess del directorio al que queremos denegar (o permitir) el servicio por IP.

Ejemplo de permitir el acceso a todas las IP, excepto a la IP 1.2.3.4:

order allow, deny
deny from 1.2.3.4
allow from all

Con el siguiente ejemplo negamos el servicio al rango de IPs 1.2.*.*, y lo permitimos al resto:

order allow, deny
deny from 1.2.
allow from all

En este ejemplo denegaremos el servicio a todo lo que venga del dominio www.dominio.es:

order allow, deny
deny from www.dominio.es
allow from all

En los tres ejemplos siguientes haremos justamente lo contrario, denegarlo a todos y permitirlo solo en los casos que queramos:

order deny, allow
allow from 1.2.3.4
deny from all

order deny, allow
allow from 1.2.
deny from all

order deny, allow
allow from www.dominio.es
deny from all

Es posible aplicar diversas normas:

order allow, deny
deny from 1.2.3.4
deny from 1.2.3.5
deny from 1.2.4.
deny from www.dominio.es
allow from all