Tema: Re: php+apache
Autorius: Jornada Del Muerto
Data: 2010-08-12 10:38:35
Cia kaip ir kolegos sako del nustatymo register globals, jei jie isjungti tai nematys pvz.:

$abc = 1;

include 'failas.php'; // <==  sis failas nematys $abc kintamojo jei register globals off taip pat jei siam faile bus koks nors kintamasis deklaruojamas tokiu budu kaip pries tai deklaravom $abc kintamaji tai tolimesnis kodas jo ir nematys


$GLOBALS['abc'] = 1; matys tolimesni includai tiesa kreiptis reiks taip pat i ji $GLOBALS['abc']

del to vienur veikia kitur ne.

Jie rodos by default buna isjungti nes laikoma kad jie saugumo skyle kas yra is tikruju tiesa, tiesa galima su .htaccess ijungt tik kur reikia tuos globalus, va pavizdys paemus drupal .htaccess kaip tai darosi korektiskai atsizvelgiant i tai koks servo softas:

# PHP 4, Apache 1.
<IfModule mod_php4.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

# PHP 4, Apache 2.
<IfModule sapi_apache2.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

Tave liecia: php_value register_globals jei padarysi 1 bus ijungta.

Siaip tai priprast prie registered globals off yra visai geras dalykas kas del saugumo + tu tokiu globals daznai ne tiek ir daug reikia, register globals paprastais kintamaisiais viska pavercia tiek get, tiek post tiek sesijos kintamuosius ir pvz tu sesijoje laikai:

$_SESSION['LoggedIn'] = 1;

Pagal ka tikrini ar zmogus prisijunges, bet tikrini jeigu paprastai $Loggedin == 1 jei register globals ON, tai hakeris gali parasyti:

www.tavo_saitas.com/index.php?Loggedin=1 ir tavo tikrinimas bus nulauztas, taspats liecia ne vien sesija bet ir GET, POST bei GLOBALS, del to bet kuriuo atveju pradzioj kintamuosius imti reikia nenaudojant sio feature o jei tai buvo GET imti per $_GET, jei tai buvo POST imti per $_POST, jei tai sesija atitinkamai $_SESSION, kitaip jei register globals on tai pakishines ka nores bet kas per paprasciausia $_GET.


P.S. As tai rasyciau ne:

include ("include/title.") . $lang;

O:

include ("include/title.".$lang);

Nes kazkaip apsunkina skaitomuma.


"AV" <av@av.lt> wrote in message news:i3rqrd$gfh$1@trimpas.omnitel.net...
> localiai pas tave standartinė php configuracija, o pagal ją register 
> globals yra off ir reikia naudoti $_GET, $_POST ir t.t. čia dėl saugumo.
> O pas hostintoją register globals on nes turbūt dar vis turi klientų 
> kurie nenori programuoti taip kaip reikia ;)
> 
> On 2010.08.10 18:29, Exo wrote:
>> Nu bet kodėl visa tai veikia ant bile kurio hostingo? Gal pasmane su
>> localaus serverio konfiguracija kažkas ne taip?
>>
>> Exo
>>
>>
>>> http://php.net/manual/en/function.isset.php
>>>
>>> arba jei tingi skaityt kaip ten viskas turi buti padaryta ir nenori
>>> gilintis ziurek cia
>>> http://lt.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
>>>
>>>
>>>
>>> "Exo" <exoNO@SPAMc123.lt> wrote in message
>>> news:i3rgnm$2qh$1@trimpas.omnitel.net...
>>>> Ta prasme taip:
>>>> <?php
>>>> if ($_GET['page'] == "") $_GET['page'] = "naujienos";
>>>> if ($_GET['lang'] == "") $_GET['lang'] = "lt";
>>>> include ("include/title.") . $_GET['lang'];
>>>> include ("include/head.") . $_GET['lang'];
>>>> include ("content/") . $_GET['page'] . "." . $_GET['lang'];
>>>> include ("include/foot.") . $_GET['lang'];
>>>> ?>
>>>>
>>>> jei taip tai situacijos tai nepakeitė, viskas tas pats
>>>>
>>>> Exo
>>>>
>>>> "bertas" <bertas@freemail.lt> wrote in message
>>>> news:i3rf2h$vjm$1@trimpas.omnitel.net...
>>>>> Nenaudok register_globals. Geriau naudok $_GET['page'] vietoj $page,
>>>>> arba jei nenori tokio griozdo naudoti tai priekyje irašyk
>>>>> $page=(isset($_GET['page')?$_GET['page']:'');
>>>>>
>>>>> 2010.08.10 15:22, Exo rašė:
>>>>>> Klaida: "Undefined variable page in ....index.php on line ..."
>>>>>> Ir galima gal konkrečiau apie isset($page), kur jį įdėt, nes neesu
>>>>>> labai
>>>>>> išprusęs šiuo klausimu :)
>>>>>>
>>>>>> Exo
>>>>>>
>>>>>>
>>>>>> "dgjgh" <sdfsdf@asdf.com> wrote in message
>>>>>> news:i3rcf8$r48$1@trimpas.omnitel.net...
>>>>>>> klaidos nenori parodyt ?
>>>>>>> bet galbut i if'a idek patikrinima isset($page)
>>>>>>>
>>>>>>> "Exo" <exoNO@SPAMc123.lt> wrote in message
>>>>>>> news:i3r9f4$m7j$1@trimpas.omnitel.net...
>>>>>>>> Sveiki,
>>>>>>>>
>>>>>>>> Susidūriau su problema, jei parašau :
>>>>>>>> <?
>>>>>>>> if ($page == "") $page = "naujienos";
>>>>>>>> if ($lang == "") $lang = "lt";
>>>>>>>> include ("include/title.") . $lang;
>>>>>>>> include ("include/head.") . $lang;
>>>>>>>> include ("content/") . $page . "." . $lang;
>>>>>>>> include ("include/foot.") . $lang;
>>>>>>>> ?>
>>>>>>>> ant hostingo viskas veikia puikiai o ant localaus serverio rodo tik
>>>>>>>> backgroundą ir nerodo contento.
>>>>>>>> Pabandžiau parašyt taip kaip turi būt
>>>>>>>> <?php
>>>>>>>> if ($page == "") $page = "naujienos";
>>>>>>>> if ($lang == "") $lang = "lt";
>>>>>>>> include ("include/title.") . $lang;
>>>>>>>> include ("include/head.") . $lang;
>>>>>>>> include ("content/") . $page . "." . $lang;
>>>>>>>> include ("include/foot.") . $lang;
>>>>>>>> ?>
>>>>>>>> tai dabar ant localaus serverio rodo visus meniu bet išmeta jog
>>>>>>>> klaidos šiose eilutėse:
>>>>>>>> if ($page == "") $page = "naujienos";
>>>>>>>> if ($lang == "") $lang = "lt";
>>>>>>>> ir nerodo pačio kontento. Gal galit man žaliam paaiškinti ką blogai
>>>>>>>> padariau? :)
>>>>>>>> Dėkui
>>>>>>>>
>>>>>>>> Exo
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>
>>>
> 
> -- 
> http://www.anekdotai.net