» »

php in varnost

php in varnost

Uporabnik ::

dve zadevi:

če postam prek forma eno spremenljivko npr. hidden name='x' value='y' ... kakšna je pol razlika če jo preberm kot $x al pa $_GET["x"]

ali pa recimo če berem IP-je z $ip = $REMOTE_ADDR ali pa $ip = $_SERVER["REMOTE_ADDR"]

Ziga Dolhar ::

php.ini direktiva 'register_globals'

Če je on, potem so vse spremenljivke registrirane tudi na lokalni ravni. Torej kot če bi na začetek napisal $x = $_GET['x'];

Če je register_globals izklopljen, te spremenljivke niso avtomatično globalne oz. se jim ne priredi nova spremenljivka. V tem primeru jih MORAŠ naslavljat z _GET/_POST -- ali pa na začetek nekam vpišeš $x = $_GET['x'].

register_globals je zaradi varnosti priporočljivo imet izklopljeno. Preberi xbiteov članek o varnosti v PHPju.
https://dolhar.si/

darh ::

Si tole prebral?

Razlike, kako spremenjivko pobereš ni... pride pa do problema ko ti hočem jest kako vrednost podatknit..
in že maš vklopljen register_globals, ti pomeni, da ti lahko - če nisi posebej previden (ampak v tem primeru lahko kr predpostavimo, da nisi) - podtaknem kaj kar nebi smel... preberi članek.. če ti še kaj ne bo jasno, pa vprašej.
Excuses are useless! Results are priceless!

Uporabnik ::

trenutno edino kar me skrbi je, da mi izklopjo globals-e :) ker pol ne bo nč delal

Ziga Dolhar ::

Joj!

foreach($_GET as $zloba) { $$zloba = $zloba; }

Torej za vsako spremenljivko iz arraya $_GET ti bo kreiralo spremenljivko kakor to stori registeR_globals.
https://dolhar.si/

Uporabnik ::

tole mi ne dela.

me pa zanima, npr. prej si reku, da če so globalsi on da naredijo $x = $_GET['x']; na začetku skripte.

v čem je pol razlika, če to ti sam narediš na začetku skripte al pa če daš raj kr
ragister_globals on.

darh ::

Uporabnik.. clueless :)


lej.. če maš register globals on.. se ti lahko zgodi tole:

(banalen) primer (banalne) skripte:


if ( $_GET['uporabnik'] == 'Uporabnik' ) {
$prijava = true;
}

if ( $prijava ) {
echo "Prijava uspešna";
}


Zdej pa jest, kot zliUser, naredim tole:
ime_skripte.php?$prijava=1;

Kaj se zgodi ? Napiše prijava uspešna... sux ane...

PHP namreč določi vrednosti iz $_GET, $_POST, $_COOKIE (če je register_globals ukloplen) istoimenskim spremenjivkam.


Sej.. če bi prebral članek.. tam notri isto piše...
Excuses are useless! Results are priceless!

Uporabnik ::

sej sm prebral, večkrat, in popolnoma razumem, sam pol zgleda zigggata ne razumem čist.

zdej me zanima bolj to, če se da tisti "foreach($_GET as $zloba) { $$zloba = $zloba; }
" v delujoče stanje spravt. se spomnem da sm včasih res vudu v phpinfo(), da _GET naredi cel array, sam zdej pa samo _SERVER["argv"] naredi array, pa še ta ni glih uporaben

Ziga Dolhar ::

Še enkrat, sem vtipkal in sprobal [in dela]:

foreach($_GET as $zloba) { $$zloba = $zloba; echo $$zloba; }


Dodal sem še en echo -- pa vidi, če dela :-).
https://dolhar.si/

Uporabnik ::

dela mi pa tole

$types_to_register = array('GET','POST','COOKIE','SESSION','SERVER');
foreach ($types_to_register as $type) {
if (@count(${'HTTP_' . $type . '_VARS'}) > 0) {
extract(${'HTTP_' . $type . '_VARS'}, EXTR_OVERWRITE);
}
}


sam tud ne čist tko k bi hotu... čim grem en klik (url po strani) naprej, že zgubi, hmm session

Zgodovina sprememb…

  • spremenilo: Uporabnik ()

darh ::

dej ti povej TOČNO kaj bi rad dosegu ?

pretvoru vse $_GET in $_POST v ustrezne istoimenske spremenjivke?

ne delat tega..
sej je fino in kamot.. samo bojš je vsako posebej..
pol točno veš kaj imaš!

Belive me...
Excuses are useless! Results are priceless!

Uporabnik ::

ja sej vem...

nove strani bodo na "off"

je pa res velik enega dela če hočeš kolkr tolk safe narest zadeve, sploh če nisi že od začetka tko "navajen"

Zgodovina sprememb…

  • spremenilo: Uporabnik ()

darh ::

a..


zadevo lahko vklopiš samo za en direktorij (in ostale poddirektorije)

V datoteko .htaccess dodaš:

php_flag register_globals on


In to je to..
samo odvisno od ponudnika če ti to dovoli...
Excuses are useless! Results are priceless!

Uporabnik ::

sem poskušal z htaccess in z virtualhost, pa mi na w2k nikakor ne rata

napaka pri restartu apacha (drugač je vhost delu):

ServerName localhost
DocumentRoot /var/www/html/mysite
php_value register_globals 0

darh ::

nene.. moraš dat on pa off - AFAIK... ne me držat za besedo.. najprej probej tko..

drgač pa poglej v ERROR log kaj bi blo narobe.. zihr kej piše..

pa ni ti treba dat v konfiguracijski file od apacha.. lahko dodaš samo v file .htaccess ki ga dodaš v direktorij kjer maš php skripte..
Excuses are useless! Results are priceless!

Uporabnik ::

[Sun Mar 23 21:19:12 2003] [alert] [client 127.0.0.1] e:/new.podjetje.si/htaccess.txt: Invalid command 'php_flag', perhaps mis-spelled or defined by a module not included in the server configuration

by the way, htaccess.txt pa zato ker w2k ne sprejme .htaccess, kar sm popravil tud v httpd.conf

v htaccess.txt datoteki pa je samo ena vrstica v kateri je zapisano:
php_flag register_globals off

darh ::

še povej kera verzija PHP in Apacha.
Excuses are useless! Results are priceless!

Uporabnik ::

PHP Version 4.2.1
Apache/1.3.26 Server

Uporabnik ::

heh, pa sessions nehajo delat :( oz. vse na novo :(

ne vem če je vredn truda tale globals off

Zgodovina sprememb…

  • spremenilo: Uporabnik ()

Ziga Dolhar ::

Nikakor.

Če je tvoja koda sicer zasnovana tako, da je varna register_globals navkljub.

...
https://dolhar.si/


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Ne prenese spremenljivke iz enega php-ja v drugega

Oddelek: Izdelava spletišč
71162 (1065) Looooooka
»

Zelo enostavna PHP skripta, ki ne dela - help :(

Oddelek: Izdelava spletišč
131486 (1251) snow
»

kater apache ext.

Oddelek: Izdelava spletišč
5714 (692) Uporabnik
»

PHP in globalne spremenljivke

Oddelek: Programiranje
61169 (1049) neonX

Več podobnih tem