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