pgerzson Wed Dec 19 20:20:51 2001 EDT Modified files: /phpdoc/hu/chapters security.xml config.xml Log: catching up config and security chapters
Index: phpdoc/hu/chapters/security.xml diff -u phpdoc/hu/chapters/security.xml:1.14 phpdoc/hu/chapters/security.xml:1.15 --- phpdoc/hu/chapters/security.xml:1.14 Wed Dec 12 15:50:54 2001 +++ phpdoc/hu/chapters/security.xml Wed Dec 19 20:20:50 2001 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-2"?> -<!-- EN-Revision: 1.19 Maintainer: goba Status: ready --> +<!-- EN-Revision: 1.38 Maintainer: pgerzson Status: ready --> <chapter id="security"> <title>Biztonság</title> @@ -35,13 +35,63 @@ fejlesztőn múlik. </simpara> <simpara> - Ez a fejezet először a különböző beállítási-lehetőség - kombinációkat tárgyalja, és azokat a helyzeteket, ahol - ezek biztonságosan használhatóak. Utána néhány kódolási - problémát mutat be, amik biztonságosság szempontjából - érdekesek lehetnek. Végül néhány általános tanács következik. + Ez a fejezet néhány biztonsági tanácsot tárgyal, a különböző + beállítási lehetőségeket és azokat a helyzeteket tárja fel, amelyekben + ezeket biztonsággal lehet használni. Utána néhány kódolási szempontot + vesz át a különböző szintű biztonságosság szempontjából </simpara> + <sect1 id="security.general"> + <title>Általános szempontok</title> + <simpara> + A teljesen biztonságos rendszer kialakítása tulajdonképpen lehetlenség, + ezért a biztonsági területen alkalmazott megközelítés a kockázat és a + használhatóság közti egyensúly megteremtése. Ha minden a felhasználó + által küldött adat két biometrikus érvényesítést (pl. retina- és + ujjlenyomatvizsgálatot) igényel, akkor igen magas szintű a rendszer + "felelősségre vonhatósága" (accountability). Ez azonban azt jelentené, hogy + félórába telne kitölteni egy meglehetősen összetett űrlapot, ami arra + ösztökélné a felhasználókat, hogy valahogy megkerüljék ezt a védelmet. + </simpara> + <simpara> + A legjobb védelem gyakran a kevésbé alkalmatlankodó és nem feltűnő, + hogy megfeleljen a követelményeknek anélkül, hogy megakadályozná a + felhasználókat a munkájuk elvégzésében vagy túlterhelné a program íróit + annak túlzott mérvű bonyolultsága. Valójában néhány biztonsági támadás + pusztán a kiaknázása az olyasfajta túlságosan is kiépített védelemnek, amely + hajlamos elerodálódni az idővel. + </simpara> + <simpara> + Egy mondatot érdemes megjegyezni: A rendszer csakis annyira jól védett, + amennyire a leggyengébb láncszeme. Ha minden tranzakciót hevesen + naplóz idő, hely és tranzakciótípus alapján is, de a felhasználó csak + egy egyszerű süti (cookie) alapján azonosítja, akkor a felhasználók + tranzakciónaplón belüli előfordulásának érvényessége, megbízhatósága + igen gyenge. + </simpara> + <simpara> + Amikor tesztelsz, vedd figyelembe, hogy nem vagy képes minden lehetőséget + kipróbálni már a legegyszerűbb oldalak esetén sem. Az általad várt adatok + teljesen különbözőek és összefüggéstelenek azoktól, amelyeket egy zsémbelődő + alkalmazott képes elküldeni, vagy amelyeket egy szoftverkalóz (cracker) több + havi munkájával állít össze, vagy ami nem más, mint egy házimacska + billenytyűzeten hagyott "lábnyoma". Ezért a legjobb, ha a programot logikai + nézőpontból közelíted meg, hogy sikerüljön észrevenni, hol jöhetnek elő nem + várt adatok és azok a továbbiakban hogyan módosulhatnak, tűnhetnek el vagy + erősödhetnek fel a hatásuk. + </simpara> + <simpara> + Az Internet tele van olyan emberekkel, akik azzal akarnak maguknak nevet + szerezni, hogy feltörik az oldalaidat, tönkreteszik a programjaidat, nem + helyénvaló tartalommal töltik fel azokat, mellesleg egy - két izgalmas(?) + napot szerezve ezzel Neked. Nem számít, hogy kis vagy nagy webhelyről van szó, + elég indok a támadásra, hogy rá vagy kapcsolva a hálóra, és van egy szervered, + amelyhez csatlakozni lehet. Sok kódtörő program nem foglalkozik a méretekkel, + egyszerűen csak nagy mennyiségű IP blokkokra vadászik áldozatokat keresve ezzel + magának. Próbálj meg nem egy lenni közülük! + </simpara> + </sect1> + <sect1 id="security.cgi-bin"> <title>CGI futtatható állományként telepített PHP</title> @@ -284,14 +334,15 @@ <simpara> Általában, ha a biztonságot akkora szintre tudjuk emelni, hogy a PHP user (ebben az esetben az Apache user) igen kis kockázattal - fut, nem képes például vírus fájlok írására a user könyvtárakba. - Letilthatjuk számára egy prívát adatbázis elérését vagy - megváltoztatását. Tipikusan ebben a helyzetben már azokat - a fájlokat sem tudja írni, amit kellene, vagy nem tud - végrehajtani adatbázis lekéréseket. + fut, nem képes például akármilyen fájlok írására a user könyvtárakba. + Letilthatjuk számára egy adatbázis elérését vagy megváltoztatását. + Tipikusan ebben a helyzetben már azokat a fájlokat sem tudja írni, + amit kellene, vagy egyaránt nem tud végrehajtani jó és rosszindulatú + adatbázis tranzakciókat. </simpara> <simpara> - Egy gyakori hiba ezen a ponton, hogy az Apache-nak root jogokat adnak. + Egy gyakori hiba ezen a ponton, hogy az Apache-nak root jogokat adnak vagy + valamilyen egyéb módon bővítik az Apache jogait / lehetőségeit. </simpara> <simpara> Az Apache user jogainak root szintre bővítése különösen @@ -299,6 +350,12 @@ chroot vagy más hasonló eszközök használata elkerülendő, ha nem vagy biztonsági szakember. </simpara> + <simpara> + Van néhány egyszerűbb megoldás is. Az <link +linkend="ini.open-basedir">open_basedir</link> + használatával szabályozni lehet, hogy mely könyvtárakat olvashatja a PHP. + Ki lehet jelölni ún. csak apache-s területeket, hogy minden web alapú műveletet + ide ezekre a nem rendszer- és nem felhasználói fájlokra korlátozz. + </simpara> </sect1> <sect1 id="security.filesystem"> @@ -334,7 +391,7 @@ <![CDATA[ <?php // egy fájl törlése a user könyvtárából -$usernev = $user_altal_beadott_nev; +$usernev = $HTTP_POST_VARS["user_altal_beadott_nev"]; $konyvtar = "/home/$usernev"; $torlendo_file = "$userfile"; unlink ($konyvtar/$torlendo_file); @@ -388,8 +445,8 @@ <?php // egy fájl törlése akárhonnan, ahol a PHP usernek // joga van erre. -$usernev = $HTTP_REMOTE_USER; // ez a user azonosított neve - // (ha volt előtte azonosítás) +$usernev = $HTTP_SERVER_VARS['REMOTE_USER']; // ez a user azonosított neve + // (ha volt előtte azonosítás) $konyvtar = "/home/$usernev"; @@ -397,7 +454,7 @@ unlink ($konyvtar/$torlendo_file); $fp = fopen("/home/logging/filedelete.log","+a"); // törlés naplózása -$logstring = "$HTTP_REMOTE_USER $konyvtar $torlendo_file"; +$logstring = "$usernev $konyvtar $torlendo_file"; fputs ($fp, $logstring); fclose($fp); @@ -405,24 +462,31 @@ ?> ]]> </programlisting> - </example> - Esetleg egy jobban testreszabott ellenőrzést is készíthetsz: + </example> + Mindamellett, ez sem mentes a hiányosságoktól. Ha az általad használt + hitelesítési módszer (authentication) megengedi a felhasználóknak, hogy + saját login naplót vezessenek, akkor ha egyikük a "../etc/" -t választja + a rendszer védtelenné válik. Ebből kiindulva, egy jobban testreszabott + ellenőrzést is készíthetsz: <example> <title>Biztonságosabb fájlnév-ellenőrzés</title> <programlisting role="php"> -<![CDATA[ -<?php -$username = getenv("REMOTE_USER"); -$homedir = "/home/$username"; - -if (!ereg('^[^./][^/]*$', $userfile)) - die('rossz fájlnév'); //nem hajtjuk végre a törlést - -//etc... -?> -]]> + <![CDATA[ +<?php +$usernev = $HTTP_SERVER_VARS['REMOTE_USER']; // hitelesites +$homedir = "/home/$usernev"; $homedir = "/home/$usernev"; + +if (!ereg('^[^./][^/]*$', $userfile)) + die('rossz fájlnév'); // vége, nincs feldolgozás + +if (!ereg('^[^./][^/]*$', $usernev)) + die('rossz usernev'); // vége, nincs feldolgozás +//stb... +?> </programlisting> - </example> + </example> + </para> + <para> A használt operációs rendszertől függően széles a védeni kívánt fájlok skálája, beleértve az eszköz hivatkozásokat (/dev/ vagy COM1), konfigurációs fájlokat (/etc/ és az .ini fájlok), jól ismert @@ -434,15 +498,32 @@ <sect1 id="security.errors"> <title>Hibajelzés</title> - <simpara> + <para> + A PHP biztonsági kérdések felől a hibajelzéseknek két oldaluk van. + Az egyik hasznos a védelem növelése szempontjából, a másik káros rá. + </para> + <para> Egy szokásos támadási technika minél több információ begyűjtése a rendszerről. Ezt úgy próbálják megoldani, hogy helytelen adatokat küldenek be, és rögzítik a hibaüzenetek típusait és környezetüket. Ez lehetőséget ad a crackernek, hogy elég információt gyűjtsön a rendszerről, és meghatározza - a lehetséges gyenge pontokat. - </simpara> - <simpara> + a lehetséges gyenge pontokat. Ha például a támadó összeszedegett + elég információt az előző űrlap kitöltések alapján, akkor + megpróbálhatja a változókat felülírni vagy megváltoztatni őket: + <example> + <title>Változók elleni támadás egy HTML oldallal</title> + <programlisting role="php"> +<![CDATA[ +<form method="post" action="tamadas_celpontja?usernev=rosszize&jelszo=rosszize"> +<input type="hidden" name="usernev" value="rosszize"> +<input type="hidden" name="jelszo" value="rosszize"> +</form> +]]> + </programlisting> + </example> + </para> + <para> A PHP által visszaadott hibaüzenetek általában hasznosak a hibákat kereső fejlesztő számára, megjelölve a fájlt, és a függvényt, ami hibás, megadva a megfelelő programsor számát. @@ -452,16 +533,35 @@ <function>highlight_file</function> függvényeket a fejlesztés során hibakeresésre is használja, de egy élesben lévő webhelyen ez rejtett változókat, ellenőrizetlen kódokat, - és más veszélyes információkat fedhet fel. - </simpara> - <simpara> + és más veszélyes információkat fedhet fel. Kifejezetten veszélyes + ismert forrású beépített hibakezelővel rendelkező kódok használata. + Ha a támadó rájön, milyen általános technikát használsz, akkor + megpróbálhatja a nyers erőre alapozva feltörni az oldalt a + különböző megszokott hibakereső (debugging) változók elküldésével: + <example> + <title>Szokványos hibakereső változók kihasználása</title> + <programlisting role="php"> +<![CDATA[ +<form method="post" action="tamadas_celpontja?errors=Y&showerrors=1"&debug=1"> +<input type="hidden" name="errors" value="Y"> +<input type="hidden" name="showerrors" value="1"> +<input type="hidden" name="debug" value="1"> +</form> +]]> + </programlisting> + </example> + </para> + <para> + A hibakezelés módjától függetlenül, az a lehetőség, hogy egy rendszerben + hibák után kuthatnak, odavezet, hogy a támadók is több információhoz + jutnak. Az általános hibaüzenetek nagyrészéből például beazonosítható, hogy a rendszer PHP-t használ. Ha a támadó egy .html oldalt látott, és ismert hibákat kihasználva meg akarta tudni, hogy milyen alkalmazást használ a rendszer, hibás adatokat beküldve azonosíthatja, hogy az oldalt egy PHP program állította elő. - </simpara> - <simpara> + </para> + <para> Egy függvényhiba elárulhatja, hogy a rendszer milyen adatbázismotort használ, vagy hogy milyen programozói stílussal készült az adott weblap. Ez mélyebb kutatásokra @@ -471,15 +571,15 @@ állapítani, hogy milyen sorrendben végzed az azonosításokat (a hibák sorszámaiból). Ezzel a gyenge pontok is könnyen megtalálhatóak egy szkriptben. - </simpara> - <simpara> + </para> + <para> A fájlrendszer vagy általános PHP hibák jelezhetik, hogy milyen jogokkal rendelkezik a webszerver, és megmutathatják a fájlok elrendezését és struktúráját. A fejlesztő által írt hibás kód súlyosbíthatja a helyzetet, régebben 'rejtett' információk könnyű kiderítését téve lehetővé. - </simpara> - <simpara> + </para> + <para> Három megoldási lehetőség adódik erre a problémára. Az első, hogy vizsgáld meg alaposan a függvényeidet, és próbáld meg elkerülni a hibákat. A második, hogy kapcsold ki a @@ -488,9 +588,111 @@ hibakezelőket definiálj. A már megtett biztonsági intézkedésektől függően esetleg mindhárom fenti módszer közül választhatsz. - </simpara> + </para> + <para> + Hogy megelőzd a bajt, hasznát veheted a PHP saját + <function>error_reporting</function> függvényének, ami segít + biztonságosabbá tenni a programodat és megtalálni a változók + vészelyeket rejtő használati formáit. A bevezetés előtti tesztelés + során E_ALL beálllítással gyorsan meg lehet találni azokat a pontokat, + ahol a változóid könnyen és/vagy rosszindulatúan módosíthatók. Ha + már kész vagy a program bevezetésére, akkor a E_NONE-t használva + teljesen el tudod szigetelni a kódodat a további vizslatásoktól. + <example> + <title>Veszélyes változók felderítése az E_ALL segítségével</title> + <programlisting role="php"> +<![CDATA[ +<?php +if ($usernev) { // nincs inicializálva vagy ellenőrizve használat előtt + $jo_belepes = 1; +} +if ($jo_belepes == 1) { // ha az előző feltétel hamis, nincs inicializálva vagy +ellenőrizve használat előtt + fpassthru ("/nagyon/kenyes/adatok/index.html"); +} +?> +]]> + </programlisting> + </example> + </para> </sect1> - + + <sect1 id="security.registerglobals"> + <title>Globálisan is elérhető változók (Register Globals) használata</title> + <para> + A biztonság növelésére használható a PHP egyik lehetősége: a + <link linkend="ini.register-globals">register_globals</link> = off beállítás + használata. Ennek a kikapcsolása azt jelenti, hogy nem "szennyezi" a PHP + kódot bármely felhasználótól jövő változó, és így csökken a potenciális + támadó által befolyásolható változók köre. Még több időt kell azzal tölteniük, + hogy kitalálják a változók feltöltésének módját, és a belső változóid + hatékonyan elkülönülnek a felhasználó által elküldött adatoktól. + </para> + <para> + While it does slightly increase the amount of effort required + to work with PHP, it has been argued that the benefits far + outweigh the effort. + <example> + <title>register_globals=off nélkül</title> + <programlisting role="php"> +<![CDATA[ +<?php +if ($usernev) { // felhasználható által hamisítható get/post/cookies + $jo_belepes = 1; +} + +if ($jo_belepes == 1) { // felhasználható által hamisítható get/post/cookies + fpassthru ("/nagyon/kenyes/adatok/index.html"); +} +?> +]]> + </programlisting> + </example> + <example> + <title>register_globals = off használatával</title> + <programlisting role="php"> +<![CDATA[ +<?php +if($HTTP_COOKIE_VARS['usernev']){ + // csak sütiként jöhet, hamisítva vagy épp ellenkezőleg + $jo_belepes = 1; + fpassthru ("/nagyon/kenyes/adatok/index.html"); +} +?> +]]> + </programlisting> + </example> + Okosan használva, még azt képes lehet jelezni, ha hamisítást + kíséreltek meg. Ha előre tudod, hogy mely változóknak honnan + kell érkezniük, megvizsgálhatod, hogy vajon más módon nem próbálták-e + meg elküldeni ezt a változót. Ez nem garantálja, hogy az adatok + nem hamisíthatók, azonban megköveteli a támadótól, hogy az rátaláljon + a megfelelő hamisítási módszerre. + <example> + <title>Egyszerű változó-átvétel felfedése</title> + <programlisting role="php"> +<![CDATA[ +<?php +if ($HTTP_COOKIE_VARS['usernev'] && + !$HTTP_POST_VARS['usernev'] && + !$HTTP_GET_VARS['usernev'] ) { + // egyéb usernev azonosítások elvégzése ... + $jo_belepes = 1; + fpassthru ("/nagyon/kenyes/adatok/index.html"); +} else { + mail("[EMAIL PROTECTED]", "Lehetséges betörési kísérlet", +$HTTP_SERVER_VARS['REMOTE_ADDR']); + echo "Védelmi szabályok megszegése, adminisztrátor értesítve."; + exit; +} +?> +]]> + </programlisting> + </example> + Természetesen register_globals egyszerű kikapcsolása nem jelenti azt, hogy + a kód biztonságos. Minden beérkező adatot valamilyen egyéb módon ellenőrizni + kell. + </para> + </sect1> + <sect1 id="security.variables"> <title>Felhasználótól érkező adatok</title> <para> @@ -508,7 +710,7 @@ // talán valaki máséból? unlink ($ordogi_valtozo); -// Az elérés naplózása... vagy nem? +// Az elérés naplózása... vagy egy /etc/passwd bejegyzésé? fputs ($fp, $ordogi_valtozo); // Valami egyértelmű dolog futtatása.. vagy rm -rf *? @@ -570,51 +772,54 @@ </para> </sect1> - <sect1 id="security.general"> - <title>Általános meggondolások</title> - <simpara> - Lehetetlen megalkotni egy teljesen biztonságos rendszert, ezért - az általános hozzáállás a kockázat és használhatóság megfelelő - súlyozása. Ha minden felhasználó által beadott adat elfogadásához - kétféle biometrikus azonosítás szükséges (mint a retina vagy - ujjlenyomat ellenőrzés), akkor rendkívül alapos rendszert - készítettél. Azonban így egy alapos kérdőív kitöltése fél órába - is beletelhet, ami arra fogja sarkalni a felhasználót, hogy - megpróbálja megkerülni az azonosítást. A jó biztonság elég - ahhoz, hogy megfeleljen az elvárásoknak anélkül, hogy - megakadályozná a felhasználót abban, hogy elvégezze a munkáját. - Valójában néhány biztonsági támadás csupán az eredeti célon - túllőt biztonsági rendszerek kihasználásából áll. - </simpara> - <simpara> - Egy mondás, amire emlékezned kell: A rendszer olyan erős, mint - a leggyengébb láncszem. Ha minden művelet naplózásra kerül, - idővel, eléréssel, típussal, stb., de a felhasználót csak - egy egyszerű sütivel azonosítod, keveset érsz a naplókkal. - </simpara> - <simpara> - Amikor kipróbálod a kódokat, vedd figyelembe, hogy nincs - lehetőséged minden hibát figyelembe venni, még a legegyszerűbb - oldalakon sem. A bejövő adat akár teljesen más is lehet, - mint amit elvársz, pl. egy rosszkedvű alkalmazott, vagy egy - több hónapos szabadidővel rendelkező cracker, akár egy - billentyűzeten végigsétáló macska hatásaként. Ezért célszerű - logikusan végigtekinteni a kódon, és megkeresni azokat a - pontokat, ahol nem várt adatok léphetnek be, és megnézni, - hogy milyen manipulációkon megy keresztül csökkentve vagy - felerősítve a hiba jelentőségét. - </simpara> - <simpara> - Az Internet tele van olyan emberekkel, akik úgy akarnak - nevet szerezni maguknak, hogy feltörik a kódodat, - működésképtelenné teszik a webhelyedet, értelmetlen adatokat - küldenek be, és más módokon teszik érdekessé a napodat. - Nem számít, hogy nagy vagy kis webhelyed van, célpont lehetsz, - mert online vagy, mivel van webkiszolgálód, amihez csatlakozni - lehet. Sok cracker program nem tesz különbséget méret - szerint, csak végiglépkednek az IP blokkokon áldozatokat - keresve. Próbálj meg nem közöttük lenni. - </simpara> + <sect1 id="security.hiding"> + <title>PHP elrejtése</title> + <para> + Néhány egyszerű módszerrel elrejtheted azt, hogy PHP-t használsz, + így lassítva le a támadót, aki fel akarja deríteni a rendszered + gyenge pontjait. A php.ini-ben az expose_php = off beállítással + csökkentheted ezeket az információkat. + </para> + <para> + Másik taktika, hogy a webszervert (pl. apache) úgy állítod be + a .htaccess-en vagy az apache konfigurációs fájlában, hogy + különböző típusú fájlokat futtass a PHP-n keresztül. Más + félrevezető fájlkiterjesztéseket használhatsz: + <example> + <title>PHP elrejtése más nyelvként</title> + <programlisting role="apache-conf"> +<![CDATA[ +# úgy tűnik, mintha PHP helyett mást használnál +AddType application/x-httpd-php .asp .py .pl +]]> + </programlisting> + </example> + vagy teljesen ismeretlent is megadhatsz: + <example> + <title>ismeretlen típusok használata PHP fájlok kiterjesztéseként</title> + <programlisting role="apache-conf"> +<![CDATA[ +# PHP kódok teljesen ismeretlen típusúnak tűnnek +AddType application/x-httpd-php .bop .foo .133t +]]> + </programlisting> + </example> + vagy html kódként is elrejtheted, amely csekély teljesítménycsökkenést okoz, + mivel minden html oldal átmegy a PHP-n: + <example> + <title>html típus használata PHP fájlkiterjesztésként</title> + <programlisting role="apache-conf"> +<![CDATA[ +# PHP kódok html típusúnak tűnnek +AddType application/x-httpd-php .htm .html +]]> + </programlisting> + </example> + Ahhoz, hogy ez jól működjön, minden PHP fájlodat át kell nevezni + a fenti kiterjesztések valamelyikének megfelelően. Mivel ez is az + elrejtőzésen / ismeretlenségen alapuló védelmi forma, kevés hátránya + mellett csekély megakadályozó intézkedést jelent. + </para> </sect1> <sect1 id="security.current"> @@ -651,4 +856,7 @@ sgml-local-catalogs:nil sgml-local-ecat-files:nil End: +vim600: syn=xml fen fdm=syntax fdl=2 si +vim: et tw=78 syn=sgml +vi: ts=1 sw=1 --> Index: phpdoc/hu/chapters/config.xml diff -u phpdoc/hu/chapters/config.xml:1.15 phpdoc/hu/chapters/config.xml:1.16 --- phpdoc/hu/chapters/config.xml:1.15 Wed Dec 12 15:50:49 2001 +++ phpdoc/hu/chapters/config.xml Wed Dec 19 20:20:50 2001 @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="iso-8859-2"?> -<!-- EN-Revision: 1.16 Maintainer: goba Status: ready --> +<!-- EN-Revision: 1.32 Maintainer: pgerzson Status: ready --> +<!-- CREDITS: goba --> <chapter id="configuration"> <title>Konfiguráció</title> @@ -15,8 +16,31 @@ elindul. A <acronym>CGI</acronym> verzióban ez minden meghíváskor megtörténik. </simpara> + <para> + <example> + <title>php.ini példa</title> + <programlisting role="ini"> +<![CDATA[ +; any text on a line after an unquoted semicolon (;) is ignored +[php] ; section markers (text within square brackets) are also ignored +; Boolean values can be set to either: +; true, on, yes +; or false, off, no, none +register_globals = off +magic_quotes_gpc = yes - <simpara> +; you can enclose strings in double-quotes +include_path = ".:/usr/local/lib/php" + +; backslashes are treated the same as any other character +include_path = ".;c:\php\lib" +]]> +</programlisting> +<!-- TODO: add more details about values and expressions --> + </example> + </para> + + <simpara> Ha a PHP-t Apache modulként használod, akkor a beállításokat az Apache konfigurációs fájljának direktíváival és .htaccess fájlokkal is @@ -84,6 +108,24 @@ </variablelist> </para> + <para> + <example> + <title>Apache konfigurációs példa</title> + <programlisting role="ini"> +<![CDATA[ +<IfModule mod_php4.c> + php_value include_path ".:/usr/local/lib/php" + php_flag safe_mode on +</IfModule> +<IfModule mod_php3.c> + php3_include_path ".:/usr/local/lib/php" + php3_safe_mode on +</IfModule> +]]> +</programlisting> + </example> + </para> + <simpara> A konfigurációs beállításokat lekérheted a <function>phpinfo</function>-val. Egyenkénti @@ -357,73 +399,99 @@ <type>string</type> </term> <listitem> - <para> - Beállítja a GET/POST/COOKIE sorrendet a változók létrehozásához. - Az alapbeállítású érték "GPC". Ha például ezt "GP"-re írod át, - a PHP figyelmen kívül fogja hagyni a cookie-kat, és ha van egy - POST és egy GET értéked ugyanazzal a névvel, a PHP a POST - értéket teszi be a név által megadott változóba. - </para> + <para> + Beállítja a GET/POST/COOKIE sorrendet a változók létrehozásához. + Az alapbeállítású érték "GPC". Ha például ezt "GP"-re +írod át, + a PHP figyelmen kívül fogja hagyni a cookie-kat, és ha van egy + POST és egy GET értéked ugyanazzal a névvel, a PHP a POST + értéket teszi be a név által megadott változóba. + </para> + <para> + Ez az opció nem elérhető PHP 4-ben. + Használd helyette a <link +linkend="ini.variables-order">variables_order</link>-t! + </para> + + </listitem> + </varlistentry> + + <varlistentry id="ini.variables-order"> + <term> + <parameter>variables_order</parameter> + <type>string</type> + </term> + <listitem> + <para> + Beállítja az ún. EGPCS (Environment - környezeti, GET, POST, Cookie, + Server) változók globális megfelelőinek létrehozási sorrendjét. + Az alapbeállítás az "EGPCS". Ha például "GP"-re van beállítva, + akkor emiatt a PHP figyelmen kívül hagyja a környezeti és szerver + változókat valamint a cookie-kat (sütiket), és minden GET-ben kapott + változót felülír a POST metódussal elküldött, azonos nevű változó. + </para> + <para> + Lásd még: <link linkend="ini.register-globals">register_globals</link>! + </para> </listitem> </varlistentry> <varlistentry id="ini.ignore-user-abort"> <term> - <parameter>ignore_user_abort</parameter> - <type>string</type> + <parameter>ignore_user_abort</parameter> + <type>string</type> </term> <listitem> - <para> - Alapbeállításban "On". Ha kikapcsolod, a szkriptek leállnak, amikor - megpróbálnak küldeni a kliensnek valamit, miután a kliens lezárta - a kapcsolat. - <function>ignore_user_abort</function>. - </para> + <para> + Alapbeállításban "On". Ha kikapcsolod, a szkriptek leállnak, amikor + megpróbálnak küldeni a kliensnek valamit, miután a kliens lezárta + a kapcsolat. + <function>ignore_user_abort</function>. + </para> </listitem> </varlistentry> <varlistentry id="ini.include-path"> <term> - <parameter>include_path</parameter> - <type>string</type> + <parameter>include_path</parameter> + <type>string</type> </term> <listitem> - <para> - Egy könyvtárlistát határoz meg, ahol a - <function>require</function>, <function>include</function> - és <function>fopen_with_path</function> függvények a fájlokat - keresik. A formátum a rendszer <envar>PATH</envar> - környezeti változójának formátumával egyező: egy könyvtárlista kettőspontokkal - elválasztva UNIX alatt, pontosvesszővel Windows alatt. - <example> - <title>UNIX include_path</title> - <programlisting role="php3.ini"> + <para> + Egy könyvtárlistát határoz meg, ahol a + <function>require</function>, <function>include</function> + és <function>fopen_with_path</function> függvények a fájlokat + keresik. A formátum a rendszer <envar>PATH</envar> + környezeti változójának formátumával egyező: egy könyvtárlista kettőspontokkal + elválasztva UNIX alatt, pontosvesszővel Windows alatt. + <example> + <title>UNIX include_path</title> + <programlisting role="php3.ini"> <![CDATA[ include_path=.:/home/httpd/php-lib ]]> -</programlisting> - </example> - <example> - <title>Windows include_path</title> - <programlisting role="php3.ini"> + </programlisting> + </example> + <example> + <title>Windows include_path</title> + <programlisting role="php3.ini"> <![CDATA[ include_path=".;c:\www\phplib" ]]> -</programlisting> - </example> - Alapbeállítású érték a <literal>.</literal> - (pont), azaz csak a szkript könyvtára.</para> + </programlisting> + </example> + Alapbeállítású érték a <literal>.</literal> + (pont), azaz csak a szkript könyvtára. + </para> </listitem> </varlistentry> <varlistentry id="ini.isapi-ext"> <term> - <parameter>isapi_ext</parameter> - <type>string</type> + <parameter>isapi_ext</parameter> + <type>string</type> </term> <listitem> - <para> - </para> + <para> + </para> </listitem> </varlistentry> @@ -559,7 +627,11 @@ <varname>$HTTP_SERVER_VARS</varname> asszociatív globális tömbökkel. </para> - </listitem> + <para> + Figyelj arra, hogy ahhoz ez működjön, az apache konfigurációs + fájljában a Directory blokkban az AllowOveride All beállítást kell megadni. + </para> + </listitem> </varlistentry> <varlistentry id="ini.short-open-tag"> @@ -630,11 +702,11 @@ <type>string</type> </term> <listitem> - <para> - Ebbe az ideiglenes könyvtárba fogja a PHP - elmenteni a weben feltöltött fájlokat. Írhatónak - kell lennie a felhasználó számára, ami alatt a PHP fut. - </para> + <para> + Ebbe az ideiglenes könyvtárba fogja a PHP + elmenteni a weben feltöltött fájlokat. Írhatónak + kell lennie a felhasználó számára, ami alatt a PHP fut. + </para> </listitem> </varlistentry> @@ -683,7 +755,7 @@ </para> </sect2> - <sect2 id="ini.sect.mail"> + <!--sect2 id="ini.sect.mail"> <title>Levelezés beállítási lehetőségei</title> <variablelist> @@ -734,7 +806,7 @@ </varlistentry> </variablelist> - </sect2> + </sect2 --> <sect2 id="ini.sect.safe-mode"> <title>Safe Mode beállítási lehetőségek</title> @@ -747,8 +819,9 @@ </term> <listitem> <para> - Ki/bekapcsolja a PHP "safe mode" funkcióját. Lásd még a - <link linkend="security">Biztonság című fejezetet</link>. + Ki/bekapcsolja a PHP "safe mode" funkcióját. Lásd még a + <link linkend="security">Biztonság</link> és + <link linkend="features.safe-mode">Safe Mode</link> c. fejezeteket! </para> </listitem> </varlistentry> @@ -916,7 +989,39 @@ </para> </listitem> </varlistentry> + + <varlistentry id="ini.mysql.default-port"> + <term> + <parameter>mysql.default_port</parameter> + <type>string</type> + </term> + <listitem> + <para> + Ha nincs egyéb portszám megadva, akkor ezt használja + az adatbáziskiszolgálóhoz történő csatlakozáskor. + Ha nincs alapérték megadva, akkor a portszámot a + <literal>MYSQL_TCP_PORT</literal> környezeti változó, + az <filename>/etc/services</filename> beli <literal>mysql-tcp</literal> + bejegyzés vagy a fordításkor megadott <literal>MYSQL_PORT</literal> + állandó adja - ebben a vizsgálati sorrendben. Win32 alatt csak a + <literal>MYSQL_PORT</literal> állandót használja. + </para> + </listitem> + </varlistentry> + <varlistentry id="ini.mysql.default-socket"> + <term> + <parameter>mysql.default_socket</parameter> + <type>string</type> + </term> + <listitem> + <para> + Az alapértelmezés szerinti socket nevet helyi adatbázis-kiszolgálóhoz + történő kapcsolódás esetén használja, ha nincs más név megadva. + </para> + </listitem> + </varlistentry> + <varlistentry id="ini.mysql.max-persistent"> <term> <parameter>mysql.max_persistent</parameter> @@ -1070,9 +1175,12 @@ (lásd a SESAM kézikönyvet): <informalexample> <programlisting role="bs2000"> +<![CDATA[ CNF=B NAM=K -NOTYPE</programlisting> +NOTYPE +]]> + </programlisting> </informalexample> </para> </listitem> @@ -1653,4 +1761,7 @@ sgml-local-catalogs:nil sgml-local-ecat-files:nil End: +vim600: syn=xml fen fdm=syntax fdl=2 si +vim: et tw=78 syn=sgml +vi: ts=1 sw=1 -->