Clever,

  Muy bueno tu comentario! Solo una pequeña observación sobre esta parte, que 
es incorrecta:

> $variable = addslashes($_POST['variable']);  // Es totalmente seguro sin
> importar el valor de magic_quotes_gpc

  Entiendo que hacer addslashes() hace más seguro lo que se reciba por 
GET/POST/COOKIES sin importar el estado de magic_quotes_gpc -- sin embargo hay 
un efecto secundario.

  Si magic_quotes_gpc estuviese activo y PHP automáticamente escapa la entrada 
GPC con backslashes, entonces hacer un addslashes va a agregarme *otros* 
backslashes adicionales.

  Ejemplo:

Se recibe del usuario:             "Todos compran con la Manolo's card"
PHP opera con magic_quotes_gpc:    "Todos compran con la Manolo\'s card"
Luego hacemos un addslashes():     "Todos compran con la Manolo\\'s card"

  El efecto es que addslashes() añade otro backslash al backslash que 
magic_quotes_gpc agregó previamente. La solución transparente es actuar 
activamente de acuerdo a la configuración de magic_quotes_gpc.

  A continuación copio y pego una pequeña librería que hace esto. NOTA 
IMPORTANTE: lo que hace este script es dejar las cadenas SIN BACKSLASHES, sin 
importar la configuración de magic_quotes_gpc. Yo escapo automágicamente las 
cadenas cuando trabajo con la DB.
  Si se quiere el efecto contrario (que nuestras cadenas tengan backslashes sin 
importar la configuración de magic_quotes_gpc), habría que reemplazar 
"stripslashes" por "addslashes" en el código.
  Para usarla, basta incluirla al principio de nuestros scripts (o script 
global de configuración, o del framework que usemos):


--------------------------------------------------------------------------------
<?php
// This is a transparent fix for PHP's Magic Quotes. I *always* work with
// Magic Quotes OFF, and I expect my scripts to work that way, so this script
// strips slashes to GPC if Magic Quotes is enabled.
//
// Based on code written by Simon Willison, which is Public Domain.
// http://scripts.incutio.com/magic_quotes/

function stripslashes_recursive ($value) {
    if (is_array ($value)) {
        foreach ($value as $index => $val) {
            $value[$index] = stripslashes_recursive ($val);
        }
        return $value;
    }
    else {
        return stripslashes ($value);
    }
}

if (get_magic_quotes_gpc ()) {
    $_GET     = stripslashes_recursive ($_GET);
    $_POST    = stripslashes_recursive ($_POST);
    $_COOKIE  = stripslashes_recursive ($_COOKIE);
    $_REQUEST = stripslashes_recursive ($_REQUEST);
}

?>
--------------------------------------------------------------------------------


  Basta incluir este script y... eso es todo. Podemos despreocuparnos por 
completo de este asunto. Después de todo, la computadora está para hacernos las 
cosas fáciles, verdad? :)

-- 
Jaime G. Wong Chacaltana
[EMAIL PROTECTED]
Coordinador
_______________________________________________
Lista de correo Linux-plug
Temática: Discusión general sobre Linux
Peruvian Linux User Group (http://www.linux.org.pe)

Participa suscribiéndote y escribiendo a:  [email protected]
Para darte de alta, de baja  o hacer ajustes a tu suscripción visita:
http://www.linux.org.pe/cgi-bin/mailman/listinfo/linux-plug

IMPORTANTE: Reglas y recomendaciones
http://www.linux.org.pe/listas/reglas.php
http://www.linux.org.pe/listas/comportamiento.php
http://www.linux.org.pe/listas/recomendaciones.php

Responder a