Cuando hablamos de seguridad muchas veces no tenemos en cuenta que nuestras carpetas y archivos son todos accesibles desde internet. Nos centramos únicamente en la seguridad de la programación dejando el resto completamente descuidado. Vamos a ver como evitar que los usuarios puedan abrir los archivos de una carpeta y php pueda incluirlos.
Para esto lo primero que necesitaremos saber es qué tipo de servidor estamos utilizando, puesto que vamos a trabajar con .htaccess y esto es de apache. Por tanto si no tenemos este tipo de software de servidor no vamos a poder realizar este método con esta técnica. Si usamos apache vamos a ver lo fácil que es.
Bloquear carpeta para los usuarios y permitir a php incluir archivos
Podemos hacerlo mediante ftp, sftp o ssh, pero desde luego mi opción preferida para esto es por ssh, aunque es necesario tener control sobre el servidor, o al menos acceso permitido con un usuario a nuestro hospedaje. Son unos pasos simples que no nos llevarán más de un minuto realizar:
- Conectar por ssh
Como hemos dicho puedes utilizar tu método preferido, aunque por ftp y sftp tienes que crear el archivo antes de conectarte para poder subirlo. - Acceder a la carpeta
Vamos a irnos hasta la carpeta que queremos proteger, por ejemplo:cd www/miweb/includes
- Creamos un archivo .htaccess
Para crear un archivo ahora que estamos en la carpeta que queremos simplemente ejecutamos lo siguientenano .htaccess
podemos usar nuestro editor preferido como por ejemplo vi
- Añadimos la restricción
Dentro de este archivo que acabamos de crear y tenemos abierto lo único que deberemos hacer es pegar la siguiente líneadeny from all
y ahora lo cerrarremos guardándolo
ctrl+x luego y, o si es en español, ctrl+x luego s
Desde este momento si intentamos acceder con el navegador a esta carpeta nos va a soltar el error de forbidden, lo que no permitirá navegar a través del servidor web, pero si utilizamos los archivos de dentro de esa carpeta y subcarpetas como includes en php veremos que todo funciona perfectamente, dado que la restricción es para accesos externos.
Para conectarnos por ssh podemos utilizar un pequeño programita llamado putty, y si preferimos ftp o sftp podemos usar winscp, los dos gratuítos y para windows.