Foros del Web » Programando para Internet » PHP »

Evitar listado de directorios

Estas en el tema de Evitar listado de directorios en el foro de PHP en Foros del Web. Quisiera saber como evitar el listado de un directorio mediante PHP. He creado una aplicación que te muestra lo directorios de path actual pero si ...
  #1 (permalink)  
Antiguo 23/06/2008, 05:39
 
Fecha de Ingreso: julio-2005
Ubicación: En el país del a ignorancia
Mensajes: 72
Antigüedad: 18 años, 8 meses
Puntos: 0
Evitar listado de directorios

Quisiera saber como evitar el listado de un directorio mediante PHP. He creado una aplicación que te muestra lo directorios de path actual pero si a la variable path le metes C: te lleva al disco duro c: y eso no quiero que ocurra.

Lo intente con esto:

Código PHP:
<?php
$ddir
='C:';

if (
$ddir == $actpath) {

echo
'Ni lo intentes';
}
else {

            
showContent($actpath); 
            
            }       
?>

Y funciona cuando el directorio al que accedo es C: pero si accedo a c:\windwos me deja acceder sin problemas :(
  #2 (permalink)  
Antiguo 23/06/2008, 06:50
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Evitar listado de directorios

La verdad, no te entiendo muy bien.

Código PHP:
<?php 
$ddir
='C:'
$ddir2='c:';

if (
$ddir == $actpath || $ddir2==$actpath) { 

echo
'Ni lo intentes'

else { 

            
showContent($actpath);  
             
            }        
?>
  #3 (permalink)  
Antiguo 23/06/2008, 07:04
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: Evitar listado de directorios

Hola,

hace poco me enfrente a un problema similar y lo resolvi asi:

suponemos que estas listando con el fichero php este directorio

/home/

lo que podrias hacer es crear un fichero (ej: seguridad.php) que contenga
Código PHP:
<?php $seguridad=1?>
entonces en tu fichero php que lista el directorio deberias comprobar que existe el fichero seguridad.php y que $seguridad es igual a 1.

Código PHP:
if(file_exists("/home/seguridad.php"))
{
   @include_once(
"/home/seguridad.php");
    if(
$seguridad==1)
    { 
           
//ENTONCES SI LISTAS EL DIRECTORIO
           //pero ocultando el fichero seguridad.php
    
}
     else
    {
          
//no estas autorizado
     
}
}
else

      
//no estas autorizado

Despues si tu programa php crea subdirectorio en el momento de crear un subdirectorio deberias crear tambien su fichero seguridad.php

Código PHP:
@mkdir("/home/usuario/");
//ahroa creamos seguridad.php en /home/usuario/seguridad.php 
De esta forma solo se listan los directorios con este fichero, entonces al querer listar c:\ o c:\windows o cualquier otro, como seguridad.php no existe no se lista.

Quizas aqui el contenido de seguridad.php no es muy util pero si tu programa quisiera no solo listar sino listar segun los permisos de un usuario logeado con $_SESSION si seria mas util.
  #4 (permalink)  
Antiguo 23/06/2008, 07:36
 
Fecha de Ingreso: julio-2005
Ubicación: En el país del a ignorancia
Mensajes: 72
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Evitar listado de directorios

Cita:
Iniciado por jaronu Ver Mensaje
La verdad, no te entiendo muy bien.

Código PHP:
<?php 
$ddir
='C:'
$ddir2='c:';

if (
$ddir == $actpath || $ddir2==$actpath) { 

echo
'Ni lo intentes'

else { 

            
showContent($actpath);  
             
            }        
?>
Con tu solución:

http://213.9.165.240/explorador.php?path=C: o c:

No lista directorios hasta aqui todo correcto

http://213.9.165.240/explorador.php?path=c:\windwos

Si lista los directorios este es el problema que plantee antes :).



Respecto a la 2º solución son muchos subdirectorios los k tendria k meter el seguridad.php pero voy a intentar adaptarla.

Alguna solucion mas?
  #5 (permalink)  
Antiguo 23/06/2008, 07:59
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: Evitar listado de directorios

si estas trabajando sobre muchos subdirectorios si puede resultar un poco coñazo crear el seguridad.php para todos ellos...

yo pense que era un solo directorio y que aun no tenias subdirectorios o tenias pocos, entonces de forma automatica al crear un subdirectorio que se cree seguridad.php.

Aunque si como dices son muchos, se podria buscar una forma de recorrer todos los subdirectorios e ir creando seguridad.php
  #6 (permalink)  
Antiguo 23/06/2008, 08:46
isra00
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evitar listado de directorios

if (substr($actpath,0,2)=="c:") die("Ni lo intentes");

De todos modos, con este método también podrían llegar a la raíz del sistema de archivos accediendo al directorio padre sucesivamente (../../../). Parece que deberías cambiar la manera de trabajar del programa, porque las comprobaciones pueden ser demasiado tediosas e imperfectas.
  #7 (permalink)  
Antiguo 23/06/2008, 18:40
 
Fecha de Ingreso: julio-2005
Ubicación: En el país del a ignorancia
Mensajes: 72
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Evitar listado de directorios

Muchas gracias eres un makinon, buen uso de la funcion substr.

Me sirve por que es una aplicación personal y lo unico que intento es que a cualquier amigo que le enseñe mi server no pueda navegar libremente por lo de plazza, no se la dare a amigos expertos en seguridad.

De nuevo, muchisimas gracias.
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 20:59.