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

Kapcsolódó cikkek