Register_globals on Veszélyben, php
Mi a register_globals?
Ez egy lehetőség a php.ini-ben, ami azt jelzi, hogy szükség van a regisztrációs változók módszerével nyert POST vagy GET globális tömb $ GLOBALS.
Hogy egy példát az érthetőség Amikor register_globals = on.
Van egy file «index.php» a következő tartalommal:
Ugyanez a példa, de a register_globals = off:
így nem helyi változó, és manipuláció jött létre «$ asd» meg kell használni egy tömböt $ _GET.
Talán most meggondolta magát mintegy register_globals.
Valószínűleg, ha lesz valami, hogy átírják a programokat, de megéri.
És most elmondom, miként lehet használni ezt a lehetőséget saját célra, azaz Amikor register_globals = on
Elkezdem az egyszerűtől a bonyolult.
Gyakran megjelenik egy figyelmeztetés:
Megjegyzés: Undefined variable: ASD (változó nevek) ****
Mit jelent ez? Ez azt jelenti, hogy a változó «$ asd» nem határozták meg egyértelműen.
Például néhány ember megengedhet magának ebben:
Tegyük fel, hogy írunk egy felhasználó hitelesítési rendszer:
Ez nem történt volna meg, ha ezt írta:
Ie Meghatároztuk a változó $ valid_user, hogy hiba esetén pedig FALSE.
Mi továbbra is az ...
Most Az isset () függvény nem biztonságos, mert le lehet cserélni a változót örömet neki.
Itt egy példa az SQL-injekció:
SELECT id, cím, leírás táblázatból ahol id = 0
UNION ALL SELECT bejelentkezés, jelszó, null az admin ahol login = 'admin'
És a támadó lesz a megjelenés és a jelszavakat :(
Mint látható a példák biztonsági réseket, hogy lehet üzemeltetni a benne register_globals.
Megbirkózni az ilyen lehetséges, ha mindig határozza meg egy változó, függetlenül a feltételeket. Vagy használja a beágyazását változók funkciói, vagyis Ha meg egy funkciót, akkor a változók benne lesz zárva a külvilágtól, mint például:
Azt hiszem sokkal több példát, de azt hiszem, hogy én adtam neked elég lesz megérteni.
Azt akarom mondani, hogy ezek a problémák egy dolog a nyár, amikor beállítja register_globals = off opciót, és próbálja újra a fenti példa.
Ezt meg lehet tenni a php.ini, de a többség a tárhely szolgáltatók nem teszi lehetővé, ezért szükséges, hogy egy fájlt «.htaccess»
Hozzon létre egy fájlt hívott. htaccess
Írunk, hogy:
php_flag register_globals off
És most néhány biztonsági kérdések rendezése :)
Egy kicsit rólam ok arra, hogy megírjam ezt a cikket:
Én személy szerint soha nem használt register_globals = on, mert Azt hittem, nem volt logikus. Tehát tudtam, hogy ez egy „+” a védelem. De a teljes nem vettem észre, hogy mennyi veszélyes lehet. Ez akkor történt, amikor elhatároztam, hogy írok GSMgen - Webhelytérkép Generátor, ami kellett volna, hogy az működjön, és ha a register_globals. Amikor elkezdtem kipróbálni, megdöbbentem ... mert szeretem használni isset () függvény, találtam benne azonnali biztonsági rés, és a folyamat során kellett hagynia ezzel :( mit tenni ...