Portál AbcLinuxu, 4. listopadu 2025 07:26
array_walk_recursive($_GET,  function(&$v, $k) {$v = mysql_real_escape_string(trim($v));});
array_walk_recursive($_POST, function(&$v, $k) {$v = mysql_real_escape_string(trim($v));});
Jestli to chapu dobre, tak to veskere predane parametry prozene pres funkci trim() a mysql_real_escape_string(). 
Tedy ptam se: staci to takhle? A k cemu je tam prosimvas ta promenna $k, ktera se tam nikde dal nepouzije?
Dekuji
            $k je klíč v tom poli, které se prochází.
            Jen jeste prosim o upresneni "co" napriklad, by se s temi retezci mohlo dit, aby vznikl problem?Třeba když se bude dekódovat z urlencode/base64, takže tam můžou vzniknout znaky, které původní escape neviděl. Nebo když se budou dělat nějaké substituce regexpem, takže třeba hacker dokáže aplikaci přinutit, aby smazala backslashe.
mysql_real_escape_string parsuje SQL absolutně stejně, jako parser dotazů v MySQL. Takže pořád existuje nepatrná možnost, že budete mít třeba jinak nakonfigurované PHP a jinak MySQL (třeba znakovou sadu), nebo bude nepatrná odchylka v parseru, a útočník dokáže tuto „ochranu“ pokořit. Nebyl by to klasický útok pomocí ';, ale něco sofistikovanějšího.
            
        Tiskni
            
                Sdílej:
                
                
                
                
                
                
            
    
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.