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.