PHP - register_globals
Tzv. register_globals je dnes již zastaralý a nebezpečný způsob práce s proměnnými, získávanými z POST, GET nebo z COOKIES. Na našem webhostingu jsou register_globals zakázané, a nelze je tedy používat.
Datum: 22.12.2010
Pokud jsou register_globals zapnuté, znamená to, že data v proměnných pocházejících z URL adresy (GET), z odeslaného formuláře (POST) nebo z cookies (COOKIE) se automaticky objeví jako globální proměnné ve vašem PHP skriptu.
Např. voláme-li náš skript takto: skript.php?jmeno=Karel&cislo=12345 a register_globals jsou zapnuté, máme tyto 2 hodnoty přístupné přes globální proměnné $jmeno a $cislo.
echo "Vaše jméno: $jmeno<br />" echo "Vaše číslo: $cislo"
Podobně to funguje při odeslání dat přes formulář metodou POST.
Zde je však schované velké nebezpečí - přidáním libovolného parametru do URL adresy vašeho skriptu může případný útočník do vašeho programu dostat libovolnou globální proměnnou s libovolnou hodnotou, což v aplikaci, která s tím nepočítá, může vyústit prolomení zabezpečení, způsobit škody apod.
Proto je používání register_globals v PHP již nedoporučované a v dalších verzích již tato možnost nebude vůbec existovat.
Správné řešení
Správně se má s daty z POST, GET a COOKIE pracovat pomocí superglobálních proměnných $_POST, $_GET a $_COOKIE.
- $_POST je asociativní pole, obsahující data z odeslaného formuláře
- $_GET je asociativní pole, obsahující parametry z URL adresy
- $_COOKIE je asociativní pole, obsahující data, uložená v cookies prohlížeče
Opravený příklad:
echo "Vaše jméno: ".$_GET["jmeno"]."<br />"; echo "Vaše číslo: ".$_GET["cislo"];
Zapnutí register_globals
Pokud přesto nutně potřebujete používat register_globals, tj. vidět vstupní data z POST, GET a COOKIES jako globální proměnné ve své aplikaci, použijte funkci import_request_variables(), která data načte a globální proměnné vytvoří.
Související odkazy
Související články
Diskuze k článku
K tomuto článku nebyl dosud vložen žádný diskuzní příspěvek, ale můžete tak učinit jako první.