Portál AbcLinuxu, 11. května 2025 10:23

Dotaz: konfigurace PHP, předání proměnné

16.11.2003 13:53 Filip Hesse | skóre: 20
konfigurace PHP, předání proměnné
Přečteno: 697×
Odpovědět | Admin

V souboru index.html je formulář, co metodou GET odešle proměnnou jmeno do souboru test2.php. Mozilla dokonce naskočí s adresou http:// ... test2.php?jmeno=Filip, ale ve skriptu se jeví jako prázdná. PHP se teprve učím a nelze vyloučit chybu ve skriptech, ale spíš to bude nějakým vyšším bezpečnostním nastavením v konfiguraci PHP. Jiné skripty echo "ahoj světe"; samozřejmě fungují. Předem díky za rady.

Přesný postup
Obsah souboru index.html:
<form action="test2.php" method=get>
Jméno: <input type=text name="jmeno">
<input type=submit value="Odešli">
</form>

Obsah souboru test2.php:
<?
echo "$jmeno";
?>

Má konfigurace:
Mandrake 9.1 bez těchto serverů, s jejich dodatečnou vlastní kompilací.
Apache 2.0.47, konfiguraván: ./configure --enable-so --prefix=/usr/local/apache2 PHP 4.3.3, konfigurováno: ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pgsql --prefix=/usr/local/php

Dodatečné nastavení
v souboru: /usr/local/apache2/conf/httpd.conf
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
Potom ještě změny v zobrazování češtiny a root adresář dokumetnů, ale to se v PHP neprojeví.
v souboru: /usr/local/lib/php.ini
register_globals = On

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.11.2003 14:24 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše konfigurace PHP, předání proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jestli ta hodnota je v $_GET, tak je problém v tom, že konfigurák /usr/local/lib/php.ini se nečte -- což je pravděpodobné ... --prefix=/usr/local/php je dost divný (IMHO nepochopení smyslu /usr/local), čekal bych pak konfigurák někde jako /usr/local/php/lib/php.ini nebo těžko říci kde. Jestli v $_GET není, problém je někde jinde. Ale až to vyřešíš, stejně doporučuji Register_globals zase pěkně vypnout.
16.11.2003 15:18 Filip Hesse | skóre: 20
Rozbalit Rozbalit vše konfigurace PHP, předání proměnné

Funguje to, díky. Soubor php.ini jsem dal do /usr/local/php/lib/php.ini. Z toho mám ale nejasno v dalších dvou věcech.

1) Vlastní adresáře v /usr/local jsem volil, aby se při "promíchání" nemohlo stát, že dva software se budou hádat o jeden soubor. Nemůže se to stát? Koukal jsem, že například f-prot instalovaný rpm balíčkem udělal to stejné, pouze si v /usr/local/bin vytvořil ln.

2) Můj jednoduchý postup funguje pouze s Register_globals On. Ještě vyzkouším $_GET["$jmeno_pole"], pak bych to vypnul. V čem je ale nebezpečí? Je to v tom, že mi někdo pomocí parametrů v adrese nacpe do skriptu vlastní hodnoty a je lepší používat metodu "post"? Jestli je toho víc, nebudu se zlobit za odpověď "tohle ještě nepochopíš". Předem dík.

16.11.2003 16:15 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše konfigurace PHP, předání proměnné
1. Můžeš si samozřejmě nainstalovat, co chceš a kam chceš. Nicméně držel bych se FHS. /usr/local strukturu kopíruje /usr. Když nevznikají konflikty při instalaci do /usr (z debu, rpm, ...), tak by neměly ani v /usr/local. K instalaci celého balíku do samostatného adresáře se používá /opt (detaily viz FHS). 2. Vlastní hodnoty lze stejně snadno (no dobrá, o kousíček složitěji) nacpat i POSTem (kdy je vhodný GET a kdy POST, to je určeno spíše idempoteností skriptu). Ale jinak skutečně jde o zamoření globálního jmenného prostoru útočníkem. Je-li skript bezpečný, je to sice teoreticky jedno, ale...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.