Foros del Web » Programando para Internet » PHP »

Es seguro o no recomendable mi sistema modular??

Estas en el tema de Es seguro o no recomendable mi sistema modular?? en el foro de PHP en Foros del Web. Hola amigos, pues estoy haciendo una web modular, y bueno he googleado y he visto varios metodos como por ejemplo, utilizando switch, o mediante la ...
  #1 (permalink)  
Antiguo 11/01/2010, 17:41
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Pregunta Es seguro o no recomendable mi sistema modular??

Hola amigos, pues estoy haciendo una web modular, y bueno he googleado y he visto varios metodos como por ejemplo, utilizando switch, o mediante la utilizacion de includes. Mi sistema es el siguiente:
Código PHP:
<?php

/*
Mi web modular.
 */

//Configuración...
$carpeta 'secciones/'//Carpeta que contiene las secciones de nuestra web.


//Obtenemos la sección que el usuario está solicitando
$seccion = @$_GET['sec'];

//Si el usuario no ha solicitado ninguna sección en especial, eso significa que quiere ver la página principal de nuestra web, que será "home", así que le damos ese valor a la variable.
if (empty($seccion)){
    
$seccion 'home';
    }

//Acto seguido verificaremos que el archivo de sección que el usuario está solicitando exista en la carpeta que hemos definido en la variable $carpeta. Si éste existe, "incluimos" el contenido. De lo contrario, indicaremos que la sección no existe.

if (file_exists($carpeta $seccion '.php')){
    include(
$carpeta $seccion '.php');
    }else{
        echo 
'¡La sección no existe! Por favor <a href="' $_SERVER['PHP_SELF'] . '?sec=home">vuelva a la página principal.';
        }


?>
</div>
</body>
</html>
Y ahora bien; ¿Es un sistema fragil? me refiero a seguridad. ¿Me lo recomiendan, o quizás debiera utilizar otros metodos?

Gracias desde ya!! y un SALUDO!!
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"

Última edición por winjose; 11/01/2010 a las 18:00
  #2 (permalink)  
Antiguo 11/01/2010, 17:45
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Es seguro o no recomendable mi sistema modular??

ps por ningun lado le veo algun vulnarabilidad......... ademas esa es la esencia de los grandes proyectos php. ^^

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #3 (permalink)  
Antiguo 11/01/2010, 18:02
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Cita:
Iniciado por masterojitos Ver Mensaje
ps por ningun lado le veo algun vulnarabilidad......... ademas esa es la esencia de los grandes proyectos php. ^^

Suerte.
:O Cual es la esencia que no la veo por ningun lado ¿Sera la sencillez? jajaja
Gracias migo. Un saludo

por cierto ya k estamos, y para no tener k abrir inecesariamente un nuevo tema;
¿Este otro sistema, en que se diferencia o cual eligiriais vosotros?

Código PHP:
<?php
    
include("includes/top_page.php");
?>
<div id="wrapper">     
    <div id="header">      
        <? include("includes/header.php"); ?>        
    </div>  
    <div id="menu">
            <? include("includes/menu.php"); ?>
        </div> 
    <div id="contenido">
        <? include("includes/pages.php"); ?>        
        <br style="clear:both;" />
    </div>
    <div id="footer">          
        <? include("includes/footer.php"); ?>        
    </div>
</div>
<? include("includes/bottom_page.php"); ?>
pages.php

Código PHP:
<?php
if (!isset($_GET['page'])) {
    include(
"pages/homepage.php");
} else {
    include(
"pages/".$_GET['page'].".php");
}
?>
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"

Última edición por GatorV; 11/01/2010 a las 21:11
  #4 (permalink)  
Antiguo 15/06/2010, 15:52
 
Fecha de Ingreso: junio-2010
Mensajes: 1
Antigüedad: 13 años, 10 meses
Puntos: 0
Mensaje Respuesta: Es seguro o no recomendable mi sistema modular??

Cita:
Iniciado por winjose Ver Mensaje
Hola amigos, pues estoy haciendo una web modular, y bueno he googleado y he visto varios metodos como por ejemplo, utilizando switch, o mediante la utilizacion de includes. Mi sistema es el siguiente:
Código PHP:
<?php

/*
Mi web modular.
 */

//Configuración...
$carpeta 'secciones/'//Carpeta que contiene las secciones de nuestra web.


//Obtenemos la sección que el usuario está solicitando
$seccion = @$_GET['sec'];

//Si el usuario no ha solicitado ninguna sección en especial, eso significa que quiere ver la página principal de nuestra web, que será "home", así que le damos ese valor a la variable.
if (empty($seccion)){
    
$seccion 'home';
    }

//Acto seguido verificaremos que el archivo de sección que el usuario está solicitando exista en la carpeta que hemos definido en la variable $carpeta. Si éste existe, "incluimos" el contenido. De lo contrario, indicaremos que la sección no existe.

if (file_exists($carpeta $seccion '.php')){
    include(
$carpeta $seccion '.php');
    }else{
        echo 
'¡La sección no existe! Por favor <a href="' $_SERVER['PHP_SELF'] . '?sec=home">vuelva a la página principal.';
        }


?>
</div>
</body>
</html>
Y ahora bien; ¿Es un sistema fragil? me refiero a seguridad. ¿Me lo recomiendan, o quizás debiera utilizar otros metodos?

Gracias desde ya!! y un SALUDO!!
Disculpen si estoy reviviendo viejos temas, pero como he usado tu codigo me senti en deuda asi que te dejo un grave error que encontre y su solucion.

El error permite la ejecucion de codigo remoto e incluso dejar muerto el server en un loop infinito.

El problema reside en que no estas manejando la variable $sec para que no reciba slashes "/" por lo que puedes saltar de carpeta en carpeta por el servidor como quieras.

Como ejemplo tenemos la siguiente estructura de archivos

/
-Secciones
--seccion1.php
--seccion2.php
-index.php
-archivo_malicioso.php

Dado que como directorio inicial es sistema usaria "Secciones" solo deberiamos retroceder un nivel para enlazar a "archivo_malicioso.php". En el funcionamiento normal tendremos urls del tipo:

www.direccion.algo/index.php?sec=seccion1

Pero se usamos la direccion

www.direccio.algo/index.php?sec=../archivo_malicioso

Ejecutariamos el archivo maldito. Tambien si en vez de usar la url anterior usamos esta:

www.direccio.algo/index.php?sec=../index

El sistema caeria en un bucle sin fin ya que cada vez que llama a index este a su vez llama de nuevo a index y asi sucesivamente.

La solucion es tan simple como usar la funcion explode (provisorio ya que no se si sirve contra urls codificadas). La funcion la usariamos de la siguiente forma:

Código PHP:
<?php
    $antipath
=explode ("/",$seccion);
    
$seccion=$antipath[0];
    
//echo $seccion; //Una pequeña comprobacion en tiempo de programacion para ver si realmente funciona.
?>
Quedando como codigo final:

Código PHP:
<?php
    
//Configuración...
    
$carpeta 'Secciones/'//Carpeta que contiene las secciones de nuestra web.
    //Obtenemos la sección que el usuario está solicitando
    
$seccion = @$_GET['sec'];
    
//Si el usuario no ha solicitado ninguna sección en especial, eso significa que quiere ver la página principal de nuestra web, que será "home", así que le damos ese valor a la variable.
    
if (empty($seccion)){
        
$seccion 'Inicio';
    }
    
//Acto seguido verificaremos que el archivo de sección que el usuario está solicitando exista en la carpeta que hemos definido en la variable $carpeta. Si éste existe, "incluimos" el contenido. De lo contrario, indicaremos que la sección no existe. Y tambien una pequeña validacion para evitar ejecuciones no autorizadas.
    
$antipath=explode ("/",$seccion);
    
$seccion=$antipath[0];
    
//echo $seccion; //Una pequeña comprobacion en tiempo de programacion para ver si realmente funciona.
    
if (file_exists($carpeta $seccion '.php')){
        include(
$carpeta $seccion '.php');
    }
    else{
        echo 
'¡La sección no existe! Por favor <a href="' $_SERVER['PHP_SELF'] . '?sec=Inicio">vuelva a la página principal.';
    }
?>
Con esto cualquier intento de usar / queda invalidado y mandaria el mensaje que no existe la seccion. Tambien se pueden agregar mas filtros, para eso se puede consultar la ayuda del comando explode.

Etiquetas: modular, seguro, sitemap
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 21:44.