Dlaczego należy używać tablic $ * zamiast zmiennych globalnych?

Z PHPEdia.pl
Skocz do: nawigacji, wyszukiwania

Począwszy od wersji 4.1.0, PHP Udostępnia zestaw predefiniowanych tablic, które zawierają zmienne serwera, zmienne środowiskowe oraz zmienne użytkownika. Używając tablic $_*, programista może od razu ustalić źródło, skąd mają pochodzić dane, jednocześnie podnosząc bezpieczeństwo skryptu.

"Niebezpieczny kod"

Przykład:

<?php
if($foo == 'secret')
{
    echo ('Secret Area');
}
?>

Wywołując powyższy skrypt z parametrem &foo=secret, ujrzymy napis Secret Area. To samo, zobaczymy przesyłając do skryptu formularzem zmienną $foo o treści "secret". Już teraz widać, że można nakazać PHP wykonać tą niedozwoloną część kodu różnymi sposobami.

Wykorzystanie tablic predefiniowanych

Przykład:

<?php
if($_POST['foo'] == 'secret')
{
    echo ('Secret Area');
}
?>

Spróbujmy jeszcze raz wywołać skrypt z parametrem &foo=secret. Nic się nie pokazało. Dlaczego? Gdyż, zmienna z parametru jest dostępna w tablicy $_GET, a nie w $_POST, chcąc wyświetlić 'Secret Area', musimy "dostarczyć" tą zmienną z formularza.

Zakończenie

Na tych dwóch prostych przykładach widać, że dzięki korzystaniu z tablic $_*, możemy w prosty sposób podnieść bezpieczeństwo skryptu, eliminując tym samym potencjalne zagrożenia.


Jest to element FAQ, czyli zestawienia odpowiedzi na najczęściej zadawane pytania.

Zestawienie: Informacje | Podstawy PHP | Porady praktyczne | Pytania z forum | Bezpieczeństwo