Košík je prázdný

Konfigurační direktiva register_globals byla jednou z funkcí v PHP, která umožňovala automatické proměnné získané z uživatelského vstupu (jako jsou GET, POST a COOKIE) přístupné jako globální proměnné ve skriptu. Tato funkce byla z bezpečnostních důvodů odstraněna v PHP 5.4.0, ale stále je důležité rozumět její historii a potenciálním rizikům, které s sebou přinesla.

Rizika spojená s používáním register_globals

Přehled rizik

Povolení register_globals mělo za následek, že proměnné z externích zdrojů (GET, POST, COOKIE) byly automaticky dostupné ve skriptech, což výrazně zvyšovalo riziko bezpečnostních útoků, jako je například:

  • Narušení integrity dat: Útočník mohl přepsat klíčové proměnné ve skriptu tím, že poslal data stejného názvu jako interní proměnné skriptu.
  • SQL Injection: Když byly databázové dotazy konstruovány s neověřenými proměnnými, útočník mohl manipulovat s těmito proměnnými a spustit škodlivé SQL dotazy.
  • Cross-Site Scripting (XSS): Nebezpečí XSS útoků bylo zvýšeno, pokud vstupní proměnné nebyly řádně escapovány.

Příklady zneužití Jednoduchý příklad zneužití register_globals by mohl vypadat takto: Pokud máte skript, který očekává proměnnou $is_admin = false; a ovládá přístup k administrativním funkcím, útočník by mohl odeslat požadavek s parametrem is_admin=1, což by ve skriptu s povolenými register_globals nastavilo $is_admin na true.

Bezpečnostní opatření Zakázání

register_globals Nejlepším způsobem, jak se vyhnout rizikům register_globals, je jeho úplné zakázání. Toto nastavení lze provést v konfiguračním souboru php.ini nastavením register_globals = off.

Validace vstupů

Každý vstup od uživatele by měl být řádně validován a sanitizován, aby se předešlo nechtěnému přepisu proměnných nebo jiným bezpečnostním hrozbám. Použití funkce filter_input a dalších bezpečnostních knihoven může pomoci ochránit aplikaci.

Ověření identity uživatele

Důležité je zabezpečit skripty pomocí mechanismů autentizace a autorizace, aby uživatelé neměli možnost přistupovat k citlivým částem aplikace bez příslušných oprávnění.

Ačkoliv register_globals již není součástí novějších verzí PHP, historie a lekce, které nám přinesla, jsou stále relevantní. Rozumění potenciálním bezpečnostním rizikům a implementace vhodných ochranných opatření je klíčové pro vývoj bezpečných web aplikací.