Portál AbcLinuxu, 10. května 2025 05:57
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.