ugrás a tartalomhoz

register_globals

Allf · 2005. Jún. 1. (Sze), 10.16
Sziasztok,
Az alábbi gondomra keresek választ és megoldást:
A szolgáltatóm szerverén be van kapcsolva a register_globals. Ennek hatására a programban felülíródik a session változó értéke.
A szolgáltató közölte, hogy nincs módjában kikapcsolni register_globals-t. Ezt tudomásul kell vennem. Azt hallottam, hogy ez komoly biztonsági kockázatot jelent. Ez igaz? És miben nyílvánul meg?
Mi a megoldás arra, hogy a változó ne íródjon felül? (Nem arra gondolok, hogy írjam újra a programot.)
Ha ki van kapcsolva a register_globals, a program tökéletesen működik.

Allf
 
1

újra

bbalint · 2005. Jún. 1. (Sze), 10.43
a) rossz a szolgáltatód; .htaccess-sel, <VirtualHost/>, <Directory/> és egyéb direktívákban rá lehet venni az apache, hogy kapcsolja ki a register_globals
b) írd újra a programot (írj egy olyan programot, ami átírja a programod); ügyelj arra, hogy ne használj olyan változóneveket, amik szerepelnek a $_SESSION tömbben.

én is egyszer írtam egy programot, $_SESSION['user']-ban voltak a bejelentkezett felhasználó adatai, de egy-egy fórum megnézésekor "elfelejtette" a bejelentkezést, mivel $user-t is használtam. kb fél napig keresgéltem, mígnem arra a gondolatra nem jutottam, hogy ,,hátha a phpinfo() többet tud nálam ...'' és tényleg: ott volt, hogy register_globals meg off, úgyhogy csak a $user-hez írtam egy kettes számot és ennyi.

azóta, mielőtt egy fia T_OPEN_TAG-et (<script language="php">, <?php) írnék, kérek egy phpinfo() képernyőt ...

biztonságról meg a PHP Manual-ban: Globálisan is elérhető változók (Register Globals) használata

bbalint
2

register_globals

Allf · 2005. Jún. 1. (Sze), 13.16
Valóban használok ilyen változókat:
$_POST["nev"], $_SESSION["nev"][$_SESSION["szamlalo"]], $tomb["nev"].
Átírom a változókat.

Köszönöm a választ.

Allf
4

Az ini_set függvényt

Anonymous · 2005. Jún. 1. (Sze), 17.04
Az ini_set függvényt használhatod? Mert akkor meg állítsd vissza és egy sorral megoldva, az amúgy meg jó szkriptjeid müködni fognak.

PZ
6

nem.

bbalint · 2005. Jún. 1. (Sze), 17.43
nem, mert a register_globals-tot csak "system"ből lehet állítani (php.ini, apache konfig)
azonkívül, ha csinálnának is ilyen "register_globals visszavonása" lehetőséget a PHP-ba, az sok fölös memóriát enne el

bár, az igaz, ha át tudnád állítani (újrafordított, módosított PHP), akkor a session modult rá lehetne a dologra venni, hogy ne írja a $változókat a $_SESSION['változó']k helyére ...

bbalint
3

Register_globals

Anonymous · 2005. Jún. 1. (Sze), 16.59
Ha register_globals = on , akkor nem veszi figyelembe, hogy honnan érkezik az adott változó, így kritikus részeknél, amikor formon vagy linken keresztül küldesz paramétereket, akkor már te is láthattad, hogy furcsaságok történnek. Ami ennél rosszabb, hogy ha rájön valaki, hogy milyen változókat használsz, akkor azokat URL-ben küldve tetszőleges értékekkel látja el és akkor jogosulatlanul fér hozzá bizonyos részekhez. Ha például nincs beállítva az open_basedir és allow_url_open, akkor meg szépen be tudja linkelni a saját szkriptjét, amit te includole-sz és már fut is a szerveren, és hogy mit csinál, annak csak a korlátozások és a lelkiismerete szab határt

PZ
5

Re: Register_globals

attlad · 2005. Jún. 1. (Sze), 17.33
Ami ennél rosszabb, hogy ha rájön valaki, hogy milyen változókat használsz, akkor azokat URL-ben küldve tetszőleges értékekkel látja el és akkor jogosulatlanul fér hozzá bizonyos részekhez.


Csak akkor igaz ha valamiért nem adsz egy változónak a programban értéket és később mégis használod valamire.

Attila
7

Igen, egy kicsit

Anonymous · 2005. Jún. 2. (Cs), 14.55
Igen, egy kicsit nagyvonalúan fogalmaztam, de sokan nem állítják be az error_reporting(E_ALL)-t - és a notice szintű üzenetek, amelyek pont a kezdőértékkel nem rendelkező változókat szokta kilistázni - és így nem is tudják, hogy melyik változónak nincs kezdőértéke.

PZ