¿Es esto suficiente para abordar la inserción de guiones / códigos maliciosos en las solicitudes GET, POST?

1

Tengo un código PHP heredado que intenta evitar la inyección de scripts / SQL con lo siguiente:

if (!empty($_POST)) {
    reset($_POST);
    while (list($k,$v)=each($_POST)) {
        if(!is_array($_POST{$k}))
        {
            $val=str_replace("&","&",htmlentities($v,ENT_QUOTES));
            $$k=$val;
            //$_POST{$k}=$val;

            if (!get_magic_quotes_gpc())
            $_POST{$k}=$val;
            else
            $_POST{$k}=stripslashes($val);

        }
    }
}

Lo mismo se replica exactamente para $ _GET también.

¿Es esto suficiente para evitar la inyección de script / SQL?

    
pregunta Steve 10.02.2011 - 11:02
fuente

1 respuesta

7

No. Está basado en listas negras, trata de cuidar trucos específicos relacionados con entidades html. Ni siquiera requiere magic_quotes, y magic_quotes ha sido desaprobado como inadecuado. Chris Shiflett es solo uno de los muchos que han escrito una publicación de blog Explicando lo vulnerable que es eso; ni siquiera detendrá los ataques automatizados modernos de los niños.

Use declaraciones preparadas en la base de datos, y estará casi todo el camino, aunque incluso las declaraciones preparadas no son infalibles.

    
respondido por el user502 11.02.2011 - 15:28
fuente

Lea otras preguntas en las etiquetas