Globálisan is elérhető változók (Register Globals) használata

A biztonság növelésére használható a PHP egyik lehetősége: a register_globals = off beállítás használata. Ennek a kikapcsolása azt jelenti, hogy a felhasználótól jövő változók nem "szennyezik be" akaratlanul a PHP kódot, és így csökken a potenciális támadó által befolyásolható változók köre. Még több időt kell azzal tölteniük, hogy kitalálják a változók feltöltésének módját, és a belső változóid hatékonyan elkülönülnek a felhasználó által elküldött adatoktól.

Az ezzel járó előnyök messze felülmúlják azt a kevés kényelmetlenséget, amelyet a megnövekedett munka mennyisége okoz.

Példa 5-14. register_globals=off nélkül

<?php
if ($usernev) {  // felhasználható által hamisítható get/post/cookies
    $jo_belepes = 1;
}

if ($jo_belepes == 1) { // felhasználható által hamisítható get/post/cookies
    fpassthru ("/nagyon/kenyes/adatok/index.html");
}
?>

Példa 5-15. register_globals = off használatával

<?php
if($_COOKIE['usernev']){
    // csak sütiként jöhet, hamisítva vagy épp ellenkezőleg
    $jo_belepes = 1;
    fpassthru ("/nagyon/kenyes/adatok/index.html");
}
?>
Okosan használva, még azt képes lehet jelezni, ha hamisítást kíséreltek meg. Ha előre tudható, hogy mely változóknak honnan kell érkezniük, akkor azt is megvizsgálhatod, hogy vajon más módon nem próbálták-e elküldeni ezt a változót. Ez nem garantálja, hogy az adatok nem hamisíthatók, azonban megköveteli a támadótól, hogy az rátaláljon a megfelelő hamisítási módszerre.

Példa 5-16. Egyszerű változó-átvétel felfedése

<?php
if ($_COOKIE['usernev'] &&
    !$_POST['usernev'] &&
    !$_GET['usernev'] ) {
    // egyéb usernev azonosítások elvégzése ...
    $jo_belepes = 1;
    fpassthru ("/nagyon/kenyes/adatok/index.html");
} else {
   mail("admin@example.com", "Lehetséges betörési kísérlet", $_SERVER['REMOTE_ADDR']);
   echo "Védelmi szabályok megszegése, adminisztrátor értesítve.";
   exit;
}
?>
Természetesen register_globals egyszerű kikapcsolása nem jelenti azt, hogy a kód biztonságos. Minden beérkező adatot valamilyen egyéb módon ellenőrizni kell.