Hosting de Calidad
  • Inicio
  • Precios y servicios
  • F.a.q y ayudas
  • Realizar pedido
  • Webs alojadas
  • Quienes somos
  • Foro HyD
  • Contacto

    Zona Dominios

    Entrar
    registro de dominios


    Zona Hosting

    Entrar
    alojamiento web


    5 Métodos de Pago
    Tarjeta de crédito
    Domiciliación
    Transferencia
    Soporte Epagado
    Soporte Paypal

    Liberalización .es

    Ver mas
    dominios .es


  •  
     
     
    Uso de Register Globals

    Uso de Register Globals

    Quizás el cambio más controversial en la historia de PHP se ha dado cuando la directiva register_globals pasó de tener como valor por defecto ON al valor OFF en PHP 4_2_0_ La dependencia sobre esta directiva era bastante común y muchas personas nisiquiera estaban enteradas de que existía y asumían que ese era el modo en que PHP trabajaba_ Esta página explicará cómo puede llegar a escribirse código inseguro con esta directiva pero tenga en mente que no es la directiva misma la que es insegura sino el uso inapropiado de ella_

    Cuando se encuentra activa, la directiva register_globals inyectará (o envenenará) sus scripts con todo tipo de variables, como variables de peticiones provenientes de formularios html_ Esto junto con el hecho de que PHP no requiere la inicialización de variables significa que es muy fácil escribir código inseguro_ Fue una decisión difícil, pero la comunidad de PHP decidió desahibilar esta directiva por defecto_ Cuando está habilitada, las personas usan variables sin saber con seguridad de dónde provienen y solo queda asumir_ Las variables internas que son definidas en el script mismo son mezcladas con los datos enviados por los usuarios y al deshabilitar register_globals se modifica este comportamiento_ Demostremos este caso con un ejemplo del uso incorrecto de register_globals:

    Ejemplo 15_14_ Ejemplo del uso inapropiado de register_globals = on

    <?php
    // definir $autorizado = true solo si el usuario ha sido autenticado
    
    if (usurio_autenticado()) {
        $autorizado = true;
    }
    
    // Ya que no inicializamos $autorizado como false, esta podria estar
    // definida a traves de register_globals, como en el caso de GET
    // auth_php?autorizado=1
    
    // De modo que cualquier persona podria verse como autenticada!
    
    if ($autorizado) {
        include "/datos/muy/importantes_php";
    }
    ?>

    Cuando register_globals = on, nuestra lógica anterior podría verse comprometida_ Cuando la directiva está deshabilitada, $autorizado no puede definirse a través de peticiones, así que no habrá ningún problema, aunque es cierto que siempre es una buena práctica de programación inicializar las variables primero_ Por ejemplo, en nuestro ejemplo anterior pudimos haber realizado primero algo como $authorized = false_ Hacer esto representa que el código anterior podría funcionar con register_globals establecido a on u off ya que los usuarios no serían autorizados por defecto_

    Otro ejemplo es aquel de las sesiones_ Cuando register_globals = on, podríamos usar también $nombre_usuario en nuestro siguiente ejemplo, pero nuevamente usted debe notar que $nombre_usuario puede provenir de otros medios, como GET (a través de la URL)_

    Ejemplo 15_15_ Ejemplo del uso de sesiones con register_globals on u off

    <?php
    // No sabriamos de donde proviene $nombre_usuario, pero sabemos que
    // $_SESSION es para datos de sesion
    
    if (isset($_SESSION['nombre_usuario'])) {
        
        echo "Hola <b>{$_SESSION['nombre_usuario']}</b>";
    
    } else {
        
        echo "Hola <b>Invitado</b><br />";
        echo "&iquest;Quisiera iniciar su sesi&oacute;n?";
    
    }
    ?>

    Incluso es posible tomar medidas preventivas para advertir cuando se intente falsificar la información_ Si usted sabe previamente con exactitud el lugar de donde debería provenir una variable, usted puede chequear si los datos enviados provienen de una fuente inadecuada_ Aunque esto no garantiza que la información no haya sido falsificada, esto requiere que un atacante adivine el medio apropiado para falsificar la información_ Si no le importa de dónde proviene la información, puede usar $_REQUEST ya que allí se incluye una mezcla de variables que provienen de datos GET, POST y COOKIE_ Consulte también la sección del manual sobre el uso de variables desde fuera de PHP_

    Ejemplo 15_16_ Detección de envenenamiento simple de variables

    <?php
    if (isset($_COOKIE['COOKIE_MAGICA'])) {
        
        // COOKIE_MAGICA proviene de una cookie_
        // Asegurese de validar los datos de la cookie!
    
    } elseif (isset($_GET['COOKIE_MAGICA']) || isset($_POST['COOKIE_MAGICA'])) {
       
       mail("admin@ejemplo_com", "Posible intento de intromision",
            $_SERVER['REMOTE_ADDR']);
       echo "Violaci&oacute;n de seguridad, el administrador ha sido alertado_";
       exit;
    
    } else {
       
       // COOKIE_MAGICA no fue definida en este REQUEST
    
    }
    ?>

    Por supuesto, deshabilitar register_globals no quiere decir que su código vaya a ser seguro_ Por cada trozo de datos que sea enviado por el usuario, éste debe ser chequeado en otras formas_ ¡Siempre valide los datos de los usuarios e inicialice sus variables! Para chequear por variables no inicializadas, usted puede usar error_reporting() para mostrar errores del nivel E_NOTICE_

    Superglobals: Nota de disponibilidad: Desde 4_1_0, están disponibles algunas matrices superglobales tales como $_GET, $_POST, y $_SERVER, etc_ Para más información puede consultar la sección superglobals

     
       



    registro de dominios | alojamiento web | hosting por publicidad

       

     

    Manual de linux Manual de apache Manual de php Manual de mysql Manual de SQL Manual del Plesk Como funciona Paypal Manual de html