Przegląd
- Dyrektywa register_globals w PHP jest być może najsłynniejszym pomysłem. Z punktu widzenia bezpieczeństwa - złym pomysłem. Skłania ona autorów do niechlujnego pisania kodów i wystawia wiele skryptów na niepotrzebne ryzyko. Przyczyną jest bezpośrednie przekazywanie do skryptu zmiennych przychodzących od użytkownika, a to łamie podstawową zasadę - nigdy nie wierz poleceniom, danym ani informacjom przekazywanym od użytkownika.
- Register Globals została oficialnie zaniechana w PHP5, i począwszy od PHP6 nie będzie więcej implementowana. To wspaniale!
- Joomla! 1.0.x używa funkcji RG_Emulation, która jest w pewnym zakresie bezpieczniejsza niż standardowa register_globals, ale to nie zmienia postaci rzeczy: najlepszym rozwiązaniem jest rezygnacja z jakiejkolwiek formy automatycznego przyporządkowywania zmiennych. Zdarza się, że źle napisane rozszerzenia mogą nie działać przy wyłączonej register_globals. Jest to znak, że rozszerzenie nie sprawdza we właściwy sposób wywołań użytkownika. Najlepsza rada - nie używajcie takich rozszerzeń.
Joomla! 1.5
- Emuluje register_globals=off. Zapobiega to możliwym do tej pory atakom na witryny Joomla!.
Joomla 1.0.15
- W tej wersji zmiana dokonywana jest z poziomu panelu administracyjnego w konfiguracji.
Joomla! 1.0.13
- Poczynając od wydania 1.0.13, funkcja Register Globals Emulation została przesunięta do głównego pliku konfiguracyjnego i może być włączana/wyłączana z panelu administratora.
Joomla! 1.0.12 i wcześniejsze
- Wyedytuj plik globals.php, znajdujący się w głównym katalogu Joomla!. Gdzieś w okolicach linii nr 23 zmień:
define('RG_EMULATION',1)
- na
define('RG_EMULATION',0)