Segédletek.hu
Segédletek weblap szerkesztéshez!
Fórum:
Postaláda:
Szavazás:
Hány éves vagy?
Segédletek:
Linkek:
register globals és szuperglobális változók:
Ebben a segédletben a register_globals problémáját írom le. Igaz, egy kissé elavult már a téma, de sokaknak még mindig nem világos, hogy miről van szó.
Akkor egy kis történelem:
a php 4.2.0 -s verziótól kezdve a register globals értéke a php.ini - ben on - ról off-ra változott. Ennek biztonsági okai vannak.
Mit is jelent ez pontosan?
PHP - ben a változókat nem kell előre definiálni. A változóknak több féle képpen ehet értéket adni(register globals bekapcsolt állapotában). Lehet egy form egyik mezője, vagy akár egy url - ben kapott adat. Nézzünk egy példát:
Ez a script, ha a felhasználó azonosította magát, és belépett, beincludol egy titkosított adatokat tartalmazó php fájlt. Igenám, de mi van, ha így hívom meg böngészőből: fajlneve.php?belepett=1 . Ha ezt megteszem, be lesz lépve az illető, és már ki is játszotta a rendszerünket. Ennek elkerülésére kapcsolták ki a register globalst.
A php 4.1.0 változatától kezdve rendelkezésünkre állnak az úgynevezett szuperglobális tömbök.
Ezek:
$_SERVER
$_GET
$_POST
$_COOKIE
$_FILES
$_ENV
$_REQUEST
(Ezekről részletesebb leírást az alábbi címen találsz:)
http://hu.php.net/manual/hu/language.variables.predefined.php
Így a felhasználótól jövő adatok ezekben a tömbökben elérhetők. Ezzel kiküszöböljuk a fent említett problémát.
Ezzel a kis szösszenettel remélem, hogy szépen lassan sikerül kiirtani a "Régi idők emlékét"
a php 4.2.0 -s verziótól kezdve a register globals értéke a php.ini - ben on - ról off-ra változott. Ennek biztonsági okai vannak.
Mit is jelent ez pontosan?
PHP - ben a változókat nem kell előre definiálni. A változóknak több féle képpen ehet értéket adni(register globals bekapcsolt állapotában). Lehet egy form egyik mezője, vagy akár egy url - ben kapott adat. Nézzünk egy példát:
<?php
if(azonosit()){
$belepett = true;
}
if($belepett = true){
include "titkos_adat.php";
}
?>
Ez a script, ha a felhasználó azonosította magát, és belépett, beincludol egy titkosított adatokat tartalmazó php fájlt. Igenám, de mi van, ha így hívom meg böngészőből: fajlneve.php?belepett=1 . Ha ezt megteszem, be lesz lépve az illető, és már ki is játszotta a rendszerünket. Ennek elkerülésére kapcsolták ki a register globalst.
A php 4.1.0 változatától kezdve rendelkezésünkre állnak az úgynevezett szuperglobális tömbök.
Ezek:
$_SERVER
$_GET
$_POST
$_COOKIE
$_FILES
$_ENV
$_REQUEST
(Ezekről részletesebb leírást az alábbi címen találsz:)
http://hu.php.net/manual/hu/language.variables.predefined.php
Így a felhasználótól jövő adatok ezekben a tömbökben elérhetők. Ezzel kiküszöböljuk a fent említett problémát.
Ezzel a kis szösszenettel remélem, hogy szépen lassan sikerül kiirtani a "Régi idők emlékét"
Írta: requiem - 2007-04-29 22:27:43
* Nem vagy bejelentkezve!* Nem töltheted le a segédlet forrását egyben!
* Nem szavazhatsz a segédletre!
* Nem írhatsz a segédlethez tartozó fórum témába!

