Foros del Web » Programando para Internet » PHP »

Como evitar accesos directo a archivos del servidor?

Estas en el tema de Como evitar accesos directo a archivos del servidor? en el foro de PHP en Foros del Web. Buenas, espero que me puedan ayudar. Resulta que estoy realizando un sitio y parte del desarrollo de ese sitio necesita generar una pagina php de ...
  #1 (permalink)  
Antiguo 10/09/2011, 14:05
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 11 años, 3 meses
Puntos: 10
Pregunta Como evitar accesos directo a archivos del servidor?

Buenas, espero que me puedan ayudar. Resulta que estoy realizando un sitio y parte del desarrollo de ese sitio necesita generar una pagina php de forma dinámica. Ya lo he conseguido, pero tengo 3 situaciones que no se como resolver. El proyecto esta divido en carpetas.

1.-Hay una carpeta configuración que guarda archivos .ini con los datos del servidor. Evidentemente si yo pongo http://localhost/misitio/configuracion/conexion.ini me muestra todo impunemente.

2.-Hay una carpeta html que tiene los archivos con prácticamente solo html y poco php que muestran datos de la base de datos, pero son html parciales, por lo que si yo pongo http://localhost/misitio/html/tabla1.php me muestra una tabla con errores por que falta la parte de conexion a la base de datos para traer los datos.

3.- Hay una carpeta php que tiene los scrips puros de php que realizan la conexión a la base de datos e inicializan variables. Si yo pongo http://localhost/misitio/php/tabla1.php no me muestra nada.

He visto por ahi que a los archivos php se les puede verificar con $ref = getenv('HTTP_REFERER'); y saber si el scrip php fue llamado desde una pagina en particular o no. Esto no me sirve en el caso de los ini por obvias razones, y no me sirve en el caso de los php por que el código php o html de las paginas se guarda en una variable y cuando tengo la pagina generada ejecuto un eval($pagina);

Que solución puede haber para estos tres casos? Lo ideal que en cualquiera de ellos se haga una redireccion al index.php y listo.

Gracias desde ya.
  #2 (permalink)  
Antiguo 10/09/2011, 14:11
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 12 años
Puntos: 5
Respuesta: Como evitar accesos directo a archivos del servidor?

HTTP_REFERER no es seguro, se puede modificar ya que es un dato que va en las cabeceras.

La mejor opción es meter esos archivos por debajo de la carpeta webroot (que es la carpeta configurada con los privilegios para que pueda ser accedida externamente), como la llame tu hosting, y acceder a ellos desde tus scripts php públicos, tus scripts públicos, dentro de la carpeta webroot los ejecuta el servidor, por lo tanto tienen permitido el acceso a la carpeta que padre de webroot, pero no tienen acceso directo desde el exterior.

Esta practica es la base para implementar aplicaciones PHP MVC seguras.
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #3 (permalink)  
Antiguo 10/09/2011, 14:21
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 11 años, 3 meses
Puntos: 10
Respuesta: Como evitar accesos directo a archivos del servidor?

La verdad que me dejaste en el aire, tenes alguna lectura para darme donde se hable del tema? Bah... si me decis que es lo que tengo que buscar desde ya muy agradecido.
  #4 (permalink)  
Antiguo 10/09/2011, 14:53
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 12 años
Puntos: 5
Respuesta: Como evitar accesos directo a archivos del servidor?

No, no tengo ningún manual que enseñarte.

Pero quédate con eso, si quieres que no se pueda acceder a los archivos desde el exterior de tu servidor, tendrás que tener esos archivos en un directorio con los permisos de +rwm solo para acceder con permisos de servidor.
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #5 (permalink)  
Antiguo 10/09/2011, 15:01
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 11 años, 3 meses
Puntos: 10
Respuesta: Como evitar accesos directo a archivos del servidor?

Me quedo con eso y con nada mas, por que no tengo ni idea de donde configurar los permisos...
  #6 (permalink)  
Antiguo 10/09/2011, 15:50
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 12 años
Puntos: 5
Respuesta: Como evitar accesos directo a archivos del servidor?

Has participado en otro hilo de un usuario que dice tener problemas con $_GET, este usuario ha puesto una ruta de su hosting, en la que se aprecia "public_html" creo que es, o algo parecido, bien, esta es la carpeta publica, con todas sus subcarpetas, mientras que por encima de esta carpeta todo lo que haya en tu servidor no es publico, y solo puede ser accedido desde dentro del propio servidor, es decir, desde tus scripts de la carpeta "public_html".

Tienes que conocer la arquitectura cliente-servidor, entender como se realiza un acceso desde un cliente externo al servidor y que permisos se necesitan, y como se realiza un acceso al servidor desde el propio servidor. Cuando tu realizas una peticion como cliente, estas ejecutando una dirección url que hace referencia a un recurso publico del servidor, y para acceder a ese recurso este tiene que tener permisos de lectura para el cliente, una vez que invocas ese scripts, es ejecutado por el servidor, no por el cliente, y ya se actúa con permisos del servidor, lo que permite el acceso a los archivos por encima de "public_html".
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #7 (permalink)  
Antiguo 10/09/2011, 16:53
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 11 años, 3 meses
Puntos: 10
Respuesta: Como evitar accesos directo a archivos del servidor?

Bien, eso si lo entendí, pero como puedo quitarle los permisos de acceso public a las sub carpetas? Es decir, configurar los permisos de acceso de las subcarpetas, a fin de evitar tener que cambiar la estructura del proyecto. Y como dije, me gustaría que al intentar acceder a uno de los archivos se produzca una redirección al index.
  #8 (permalink)  
Antiguo 11/09/2011, 00:37
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 12 años
Puntos: 5
Respuesta: Como evitar accesos directo a archivos del servidor?

El cambio de permisos con tu programa ftp podrás hacerlo.

Respecto a lo otro, para estas cosas sirve el patrón MVC, hay diferentes técnicas también, pero teniendo en cuenta que tu programación sera estructurada, se me ocurre que cuando vayas a hacer un include de esos archivos antes crees una variable check para asegurarte de que la llamada se realiza desde un script correcto, algo así.

Código PHP:
Ver original
  1. $check = true;
  2. include_once("mi_script.php");

Y en tu script:
Código PHP:
Ver original
  1. if(!isset($check)){
  2.   header('Location: mi_index.php');
  3.   exit(0);
  4. }
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #9 (permalink)  
Antiguo 11/09/2011, 12:30
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 11 años, 3 meses
Puntos: 10
Respuesta: Como evitar accesos directo a archivos del servidor?

Pasa que no hago include, directamente el script php encargado de generar la pagina, carga el código desde las otras paginas sin usar include, leyendo el archivo. El contenido de varios archivos (php, html, css) queda almacenado en una variable a la cual le hago un eval($pagina). No estoy trabajando con programación estructurada, sino basándome en mvc, y orientado a objetos.
  #10 (permalink)  
Antiguo 11/09/2011, 13:32
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 12 años
Puntos: 5
Respuesta: Como evitar accesos directo a archivos del servidor?

¿Que mas dará el include?. lo único que tienes que evaluar es que exista "algo" que de ninguna manera se pueda crear desde una petición exterior, esa variable por ejemplo y ya esta...
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #11 (permalink)  
Antiguo 11/09/2011, 15:26
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 11 años, 3 meses
Puntos: 10
Respuesta: Como evitar accesos directo a archivos del servidor?

La idea es no evaluar nada extraño a lo que el script haga, la idea es que proporcionar la seguridad por fuera del script y no por dentro, ademas de que esa evaluación no me sirve si tengo un html (el cual tendría que pasar a php) y tampoco me sirve para el ini (para el cual directamente no hay solución).

Tendría que probar lo de los permisos, pero actualmente estoy trabajando con localhost, por lo que el acceso al htdocs en xampp lo hago directamente.

Así que espero otras opciones.

Etiquetas: directo, html, tabla, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:32.