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


Upozorňujeme, že v PHP 5.4 již register_globals vůbec neexistují, nelze je nijak zapnout.

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, máte 2 možnosti:

  1. Použijte funkci import_request_variables(), která data načte a globální proměnné vytvoří.
  2. Zapněte si register_globals v zákaznické administraci v konfiguraci PHP

Přesto chceme znovu zdůraznit, že jakékoliv zapínání register_globals rozhodně nedoporučujeme! Požádejte tvůrce své PHP aplikace, aby register_globals nepoužíval, protože se jedná o nebezpečné a zastaralé řešení.

Související odkazy

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í.

Přihlášení zákazníka

Nemáte ještě zákaznický účet? Registrace

Copyright © WEDOS, 2017

Facebook RSS