E 'abbastanza per affrontare l'inserimento di script / codice dannoso in GET, richieste POST?

1

Ho un codice PHP legacy che tenta di prevenire script / SQL injection con quanto segue:

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 stesso è esattamente replicato anche per $ _GET.

È sufficiente per evitare script / SQL injection?

    
posta Steve 10.02.2011 - 11:02
fonte

1 risposta

7

No. È basato su liste nere, cerca di prendersi cura di trucchi specifici che coinvolgono entità html. Non richiede nemmeno magic_quotes e magic_quotes è stato dichiarato obsoleto. Chris Shiflett è solo uno dei tanti che ha scritto un post sul blog spiegando quanto sia vulnerabile; non fermerà nemmeno i moderni attacchi automatizzati di script-kiddie.

Usa le dichiarazioni preparate nel database e sarai la maggior parte del modo - anche se le dichiarazioni preparate non sono infallibili.

    
risposta data 11.02.2011 - 15:28
fonte

Leggi altre domande sui tag