Глава 22. гЮЫХЫЕММШИ ПЕФХЛ

Содержание
аЕГНОЮЯМНЯРЭ Х ГЮЫХЫЕММШИ ПЕФХЛ
нЦПЮМХВЕММШЕ ХКХ МЕДНЯРСОМШЕ Б ГЮЫХЫЕММНЛ ПЕФХЛЕ ТСМЙЖХХ

гЮЫХЫЕММШИ ПЕФХЛ Б PHP - ЩРН ОНОШРЙЮ ПЕЬХРЭ ОПНАКЕЛС АЕГНОЮЯМНЯРХ МЮ ЯНБЛЕЯРМН ХЯОНКЭГСЕЛШУ ЯЕПБЕПЮУ. мЕЯЛНРПЪ МЮ РН, ВРН ЙНМЖЕОРСЮКЭМН МЕБЕПМН ПЕЬЮРЭ ЩРС ОПНАКЕЛС МЮ СПНБМЕ PHP, МН ОНЯЙНКЭЙС ЮКЭРЕПМЮРХБШ СПНБМЪ БЕА-ЯЕПБЕПЮ ХКХ НОЕПЮЖХНММНИ ЯХЯРЕЛШ МЮ ЯЕЦНДМЪЬМХИ ДЕМЭ НРЯСРЯРБСЧР, ЛМНЦХЕ ОНКЭГНБЮРЕКХ, НЯНАЕММН ОПНБЮИДЕПШ, ХЯОНКЭГСЧР ХЛЕММН ГЮЫХЫЕММШИ ПЕФХЛ.

аЕГНОЮЯМНЯРЭ Х ГЮЫХЫЕММШИ ПЕФХЛ

Таблица 22-1. йНМТХЦСПЮЖХНММШЕ НОЖХХ, СОПЮБКЪЧЫХЕ ГЮЫХЫЕММШЛ ПЕФХЛНЛ Х БНОПНЯЮЛХ АЕГНОЮЯМНЯРХ

хЛЪгМЮВЕМХЕ ОН СЛНКВЮМХЧхГЛЕМЪЕЛНЯРЭ
safe_mode"0"PHP_INI_SYSTEM
safe_mode_gid"0"PHP_INI_SYSTEM
safe_mode_include_dirNULLPHP_INI_SYSTEM
safe_mode_exec_dir""PHP_INI_SYSTEM
safe_mode_allowed_env_varsPHP_PHP_INI_SYSTEM
safe_mode_protected_env_varsLD_LIBRARY_PATHPHP_INI_SYSTEM
open_basedirNULLPHP_INI_SYSTEM
disable_functions""PHP_INI_SYSTEM
disable_classes""PHP_INI_SYSTEM
дКЪ ОНКСВЕМХЪ АНКЕЕ ДЕРЮКЭМНИ ХМТНПЛЮЖХХ Н ЙНМЯРЮМРЮУ БХДЮ PHP_INI_* НГМЮЙНЛЭРЕЯЭ Я ТСМЙЖХЕИ ini_set().

йПЮРЙНЕ ПЮГЗЪЯМЕМХЕ ЙНМТХЦСПЮЖХНММШУ ДХПЕЙРХБ.

safe_mode boolean

бЙКЧВЮЕР/НРЙКЧВЮЕР ГЮЫХЫЕММШИ ПЕФХЛ Б PHP. дКЪ ОНКСВЕМХЪ АНКЕЕ ДЕРЮКЭМНИ ХМТНПЛЮЖХХ НГМЮЙНЛЭРЕЯЭ Я ПЮГДЕКНЛ аЕГНОЮЯМНЯРЭ.

safe_mode_gid boolean

оН СЛНКВЮМХЧ Б ГЮЫХЫЕММНЛ ПЕФХЛЕ ОПХ НРЙПШРХХ ТЮИКЮ БШОНКМЪЕРЯЪ ОПНБЕПЙЮ ГМЮВЕМХЪ UID. дКЪ РНЦН, ВРНАШ МЕЛМНЦН ЯЛЪЦВХРЭ ЩРН СЯКНБХЕ Х БШОНКМЪРЭ ОПНБЕПЙС GID, МЕНАУНДХЛН СЯРЮМНБХРЭ ГМЮВЕМХЕ on ДКЪ ТКЮЦЮ safe_mode_gid. нОПЕДЕКЪЕР, ХЯОНКЭГНБЮРЭ ХКХ МЕР ОПНБЕПЙС UID (FALSE) ХКХ GID (TRUE) ОПНБЕПЙС ОПХ НАПЮЫЕМХХ Й ТЮИКС.

safe_mode_include_dir string

оПХ ОНДЙКЧВЕМХХ ТЮИКНБ, ПЮЯОНКНФЕММШУ Б СЙЮГЮММНИ ДХПЕЙРНПХХ Х БЯЕУ ЕЕ ОНДЙЮРЮКНЦЮУ, ОПНБЕПЙЮ МЮ ЯННРБЕРЯРБХЕ ГМЮВЕМХИ UID/GID МЕ БШОНКМЪЕРЯЪ (б ЯКСВЮЕ, ЕЯКХ СЯРЮМНБКЕММЮЪ ДХПЕЙРНПХЪ МЕ СЙЮГЮМЮ Б include_path, МЕНАУНДХЛН СЙЮГШБЮРЭ ОНКМШИ ОСРЭ ОПХ БЙКЧВЕМХХ).

мЮВХМЮЪ Я PHP 4.2.0 ГМЮВЕМХЕЛ ЩРНИ ДХПЕЙРХБШ ЛНФЕР АШРЭ ЯОХЯНЙ ЙЮРЮКНЦНБ, ПЮГДЕКЕММШУ ДБНЕРНВХЕЛ (РНВЙНИ Я ГЮОЪРНИ МЮ windows-ЯХЯРЕЛЮУ), ВРН ЮМЮКНЦХВМН ЯХМРЮЙЯХЯС include_path.

сЙЮГЮММНЕ ГМЮВЕМХЕ Б ДЕИЯРБХРЕКЭМНЯРХ ЪБКЪЕРЯЪ ОПЕТХЙЯНЛ, Ю МЕ МЮГБЮМХЕЛ ДХПЕЙРНПХХ. щРН НГМЮВЮЕР, ВРН ГЮОХЯЭ "safe_mode_include_dir = /dir/incl" ОНГБНКЪЕР ОНДЙКЧВЮРЭ ТЮИКШ, МЮУНДЪЫХЕЯЪ Б ДХПЕЙРНПХЪУ "/dir/include" Х "/dir/incls", Б ЯКСВЮЕ, ЕЯКХ НМХ ЯСЫЕЯРБСЧР. еЯКХ БШ УНРХРЕ СЙЮГЮРЭ ДНЯРСО Й ЙНМЙПЕРМНИ ДХПЕЙРНПХХ, ХЯОНКЭГСИРЕ ГЮБЕПЬЮЧЫХИ ЯКЕЬ, МЮОПХЛЕП: "safe_mode_include_dir = /dir/incl/".

safe_mode_exec_dir string

б ЯКСВЮЕ, ЙНЦДЮ PHP ПЮАНРЮЕР Б ГЮЫХЫЕММНЛ ПЕФХЛЕ, system() Х ДПСЦХЕ ТСМЙЖХХ ДКЪ БШОНКМЕМХЪ ЯХЯРЕЛМШУ ЙНЛЮМД Х ОПНЦПЮЛЛ НРЙКНМЪЧР БШОНКМЕМХЕ ОПНЦПЮЛЛ, МЮУНДЪЫХУЯЪ БЯЕ ДЮММНИ ДХПЕЙРНПХХ.

safe_mode_allowed_env_vars string

бНГЛНФМНЯРЭ СЯРЮМЮБКХБЮРЭ ОЕПЕЛЕММШЕ НЙПСФЕМХЪ - ОНРЕМЖХЮКЭМЮЪ АПЕЬЭ Б АЕГНОЮЯМНЯРХ. гМЮВЕМХЕЛ ЩРНИ ДХПЕЙРХБШ ЪБКЪЕРЯЪ ЯОХЯНЙ ОПЕТХЙЯНБ, ПЮГДЕКЕММШУ ДБНЕРНВХЪЛХ. б ГЮЫХЫЕММНЛ ПЕФХЛЕ ОНКЭГНБЮРЕКЭ ЛНФЕР ЛНДХТХЖХПНБЮРЭ РНКЭЙН РЕ ОЕПЕЛЕММШЕ НЙПСФЕМХЪ, ХЛЕМЮ ЙНРНПШУ МЮВХМЮЧРЯЪ Я НДМНЦН ХГ СЙЮГЮММШУ ОПЕТХЙЯНБ. оН СЛНКВЮМХЧ, ОНКЭГНБЮРЕКЧ ДНЯРСОМШ ОЕПЕЛЕММШЕ, ЙНРНПШЕ МЮВХМЮЧРЯЪ Я ОПЕТХЙЯЮ PHP_ (МЮОПХЛЕП, PHP_FOO=BAR).

Замечание: б ЯКСВЮЕ, ЕЯКХ ЩРНИ ДХПЕЙРХБЕ СЙЮГЮРЭ ОСЯРНЕ ГМЮВЕМХЕ, ОНКЭГНБЮРЕКЭ ОНКСВХР БНГЛНФМНЯРЭ ЛНДХТХЖХПНБЮРЭ КЧАСЧ ОЕПЕЛЕММСЧ НЙПСФЕМХЪ!

safe_mode_protected_env_vars string

щРЮ ДХПЕЙРХБЮ ЯНДЕПФХР ЯОХЯНЙ ОЕПЕЛЕММШУ НЙПСФЕМХЪ, ПЮГДЕКЕММШУ ДБНЕРНВХЕЛ, ГМЮВЕМХЕ ЙНРНПШУ ОНКЭГНБЮРЕКЭ МЕ ЯЛНФЕР ХГЛЕМХРЭ, ХЯОНКЭГСЪ ТСМЙЖХЧ putenv(). гМЮВЕМХЪ ЩРХУ ОЕПЕЛЕММШУ НЯРЮЧРЯЪ ГЮЫХЫЕММШЛХ, ДЮФЕ ЕЯКХ ХУ ЛНДХТХЙЮЖХЪ ПЮГПЕЬЕМЮ ДХПЕЙРХБНИ safe_mode_allowed_env_vars.

open_basedir string

нЦПЮМХВХБЮЕР ЯОХЯНЙ ТЮИКНБ, ЙНРНПШЕ ЛНЦСР АШРЭ НРЙПШРШ Б PHP, СЙЮГЮММШЛ ДЕПЕБНЛ ДХПЕЙРНПХИ МЕГЮБХЯХЛН НР РНЦН, ХЯОНКЭГСЕРЯЪ ГЮЫХЫЕММШИ ПЕФХЛ ХКХ МЕР.

йЮФДШИ ПЮГ, ЙНЦДЮ ЯЙПХОР ОШРЮЕРЯЪ НРЙПШРЭ ТЮИК, МЮОПХЛЕП, ОПХ ОНЛНЫХ ТСМЙЖХХ fopen() ХКХ gzopen(), ОПНБЕПЪЕРЯЪ ЛЕЯРНПЮЯОНКНФЕМХЕ ТЮИКЮ. б ЯКСВЮЕ, ЕЯКХ НМ МЮУНДХРЯЪ БМЕ СЙЮГЮММНЦН ДЕПЕБЮ ДХПЕЙРНПХИ, PHP НРЙЮГШБЮЕР Б НРЙПШРХЪ ТЮИКЮ. бЯЕ ЯХЛБНКХВЕЯЙХЕ ЯЯШКЙХ ПЮЯОНГМЮЧРЯЪ Х ОПЕНАПЮГСЧРЯЪ, ОНЩРНЛС НАНИРХ ЩРН НЦПЮМХВЕМХЕ ОПХ ОНЛНЫХ ЯХЛБНКХВЕЯЙХУ ЯЯШКНЙ МЕБНГЛНФМН.

яОЕЖХЮКЭМНЕ ГМЮВЕМХЕ . СЙЮГШБЮЕР, ВРН АЮГНБНИ ЯКЕДСЕР ЯВХРЮРЭ ДХПЕЙРНПХЧ, Б ЙНРНПНИ ПЮЯОНКНФЕМ ЯЮЛ ЯЙПХОР.

дКЪ Windows-ЯХЯРЕЛ ПЮГДЕКХРЕКЕЛ ЯОХЯЙЮ ДХПЕЙРНПХИ ЯКСФХР РНВЙЮ Я ГЮОЪРНИ. дКЪ БЯЕУ ДПСЦХУ НОЕПЮЖХНММШУ ЯХЯРЕЛ Б ЙЮВЕЯРБЕ ПЮГДЕКХРЕКЪ ХЯОНКЭГСЕРЯЪ ДБНЕРНВХЕ. б ЯКСВЮЕ, ЕЯКХ PHP ПЮАНРЮЕР ЙЮЙ ЛНДСКЭ БЕА-ЯЕПБЕПЮ Apache, БЯЕ СЙЮГЮМХЪ open_basedir ДКЪ ПНДХРЕКЭЯЙХУ ДХПЕЙРНПХИ МЮЯКЕДСЧРЯЪ.

сЙЮГЮММНЕ ГМЮВЕМХЕ Б ДЕИЯРБХРЕКЭМНЯРХ ЪБКЪЕРЯЪ ОПЕТХЙЯНЛ, Ю МЕ МЮГБЮМХЕЛ ДХПЕЙРНПХХ. щРН НГМЮВЮЕР, ВРН ГЮОХЯЭ "safe_mode_include_dir = /dir/incl" ОНГБНКЪЕР НРЙПШБЮРЭ ТЮИКШ, МЮУНДЪЫХЕЯЪ Б ДХПЕЙРНПХЪУ "/dir/include" Х "/dir/incls", Б ЯКСВЮЕ, ЕЯКХ НМХ ЯСЫЕЯРБСЧР. еЯКХ БШ УНРХРЕ СЙЮГЮРЭ ДНЯРСО Й ЙНМЙПЕРМНИ ДХПЕЙРНПХХ, ХЯОНКЭГСИРЕ ГЮБЕПЬЮЧЫХИ ЯКЕЬ, МЮОПХЛЕП: "safe_mode_include_dir = /dir/incl/".

Замечание: бНГЛНФМНЯРЭ ПЮАНРШ Я МЕЯЙНКЭЙХЛХ ДХПЕЙРНПХЪЛХ ДНАЮБКЕМЮ Б БЕПЯХХ 3.0.7.

оН СЛНКВЮМХЧ ПЮГПЕЬЕМ ДНЯРСО ЙН БЯЕЛ ТЮИКЮЛ.

disable_functions string

щРЮ ДХПЕЙРХБЮ ОНГБНКЪЕР БЮЛ ГЮОПЕРХРЭ МЕЙНРНПШЕ ТСМЙЖХХ ХГ ЯННАПЮФЕМХИ АЕГНОЮЯМНЯРХ. б ЙЮВЕЯРБЕ ГМЮВЕМХЪ НМЮ ОПХМХЛЮЕР ЯОХЯНЙ ТСМЙЖХИ, ПЮГДЕКЕММШУ ДБНЕРНВХЕЛ. disable_functions МЕ ГЮБХЯХР НР РНЦН, ХЯОНКЭГСЕРЯЪ гЮЫХЫЕММШИ ПЕФХЛ ХКХ МЕР.

щРЮ ДХПЕЙРХБЮ ДНКФМЮ АШРЭ СЙЮГЮМЮ Б php.ini. бШ МЕ ЛНФЕРЕ ХЯОНКЭГНБЮРЭ ЕЕ, МЮОПХЛЕП, Б httpd.conf.

disable_classes string

щРЮ ДХПЕЙРХБЮ ОНГБНКЪЕР БЮЛ ГЮОПЕРХРЭ МЕЙНРНПШЕ ЙКЮЯЯШ ХГ ЯННАПЮФЕМХИ АЕГНОЮЯМНЯРХ. б ЙЮВЕЯРБЕ ГМЮВЕМХЪ НМЮ ОПХМХЛЮЕР ЯОХЯНЙ ЙКЮЯНБ, ПЮГДЕКЕММШУ ДБНЕРНВХЕЛ. disable_classes МЕ ГЮБХЯХР НР РНЦН, ХЯОНКЭГСЕРЯЪ гЮЫХЫЕММШИ ПЕФХЛ ХКХ МЕР.

щРЮ ДХПЕЙРХБЮ ДНКФМЮ АШРЭ СЙЮГЮМЮ Б php.ini. бШ МЕ ЛНФЕРЕ ХЯОНКЭГНБЮРЭ ЕЕ, МЮОПХЛЕП, Б httpd.conf.

Замечание: щРЮ ДХПЕЙРХБЮ ДНЯРСОМЮ, МЮВХМЮЪ Я PHP 4.3.2

нГМЮЙНЛЭРЕЯЭ РЮЙФЕ ЯН ЯКЕДСЧЫХЛХ ЙНМТХЦСПЮЖХНММШЛХ ДХПЕЙРХБЮЛХ: register_globals, display_errors, Х log_errors

б ЯКСВЮЕ, ЕЯКХ ДХПЕЙРХБЮ safe_mode СЯРЮМНБКЕМЮ ГМЮВЕМХЕЛ on, PHP ОПНБЕПХР, ЯНБОЮДЮЕР КХ БКЮДЕКЕЖ ЯЙПХОРЮ Х БКЮДЕКЕЖ ТЮИКЮ, ЙНРНПШЛ НОЕПХПСЕР ЯЙПХОР. мЮОПХЛЕП:
-rw-rw-r--    1 rasmus   rasmus       33 Jul  1 19:20 script.php 
-rw-r--r--    1 root     root       1116 May 26 18:01 /etc/passwd
БШОНКМХЕ ЯПХОРЮ script.php
<?php
readfile
('/etc/passwd');
?>
Б ЯКСВЮЕ ХЯОНКЭГНБЮМХЪ ГЮЫХЫЕММНЦН ПЕФХЛЮ ОПХБНДХР Й ЯКЕДСЧЫЕИ НЬХАЙЕ:
Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not 
allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2

рЕЛ МЕ ЛЕМЕЕ, ОПЕДСЯЛНРПЕМЮ БНГЛНФМНЯРЭ БЛЕЯРН ОПНБЕПЙХ МЮ ЯННРБЕРЯРБХЕ UID ХЯОНКЭГНБЮРЭ АНКЕЕ ЛЪЦЙСЧ ОПНБЕПЙС МЮ ЯННРБЕРЯРБХЕ GID. дКЪ ЩРНЦН МЕНАУНДХЛН ХЯОНКЭГНБЮРЭ ДХПЕЙРХБС safe_mode_gid. б ЯКСВЮЕ, ЕЯКХ НМЮ СЯРЮМНБКЕМЮ ГМЮВЕМХЕЛ On, ХЯОНКЭГСЕРЯЪ АНКЕЕ ЛЪЦЙЮЪ ОПНБЕПЙЮ GID. б ОПНРХБМНЛ ЯКСВЮЕ, ЕЯКХ СЯРЮМНБКЕМН ГМЮВЕМХЕ Off (ГМЮВЕМХЕ ОН СЛНКВЮМХЧ), БШОНКМЪЕРЯЪ АНКЕЕ ЯРПНЦЮЪ ОПНБЕПЙЮ МЮ ЯННРБЕРЯРБХЕ UID.

б ЙЮВЕЯРБЕ ЮКЭРЕПМЮРХБШ ДХПЕЙРХБЕ safe_mode БШ ЛНФЕРЕ НЦПЮМХВХРЭ БЯЕ БШОНКМЪЕЛШЕ ЯЙПХОРШ ФЕЯРЙН ГЮДЮММШЛ ДЕПЕБНЛ ДХПЕЙРНПХИ ОПХ ОНЛНЫХ НОЖХХ open_basedir. мЮОПХЛЕП (ТПЮЦЛЕМР ЙНМТХЦСПЮЖХНММНЦН ТЮИКЮ httpd.conf):
<Directory /docroot>
  php_admin_value open_basedir /docroot 
</Directory>
оПХ ОНОШРЙЕ БШОНКМХРЭ РНР ФЕ ЯЮЛШИ ЯЙПХОР script.php Я СЙЮГЮММНИ НОЖХЕИ open_basedir БШ ОНКСВХРЕ ЯКЕДСЧЫХИ ПЕГСКЭРЮР:
Warning: open_basedir restriction in effect. File is in wrong directory in 
/docroot/script.php on line 2

бШ РЮЙФЕ ЛНФЕРЕ ГЮОПЕРХРЭ НРДЕКЭМШЕ ТСМЙЖХХ. яКЕДСЕР ГЮЛЕРХРЭ, ВРН ДХПЕЙРХБЮ disable_functions ЛНФЕР АШРЭ СЙЮГЮМЮ ХЯЙКЧВХРЕКЭМН Б ЙНМТХЦСПЮЖХНММНЛ ТЮИКЕ php.ini, ЩРН НГМЮВЮЕР, ВРН БШ МЕ ЛНФЕРЕ, НРПЕДЮЙРХПНБЮБ httpd.conf, СЯРЮМНБХРЭ ХМДХБХДСЮКЭМШЕ ГМЮВЕМХЪ ДКЪ ЙНМЙПЕРМНЦН БХПРСЮКЭМНЦН УНЯРЮ ХКХ ЙЮРЮКНЦЮ. еЯКХ ДНАЮБХРЭ Б php.ini ЯКЕДСЧЫСЧ ЯРПНЙС:
disable_functions readfile,system
пЕГСКЭРЮРНЛ ПЮАНРШ ЯЙПХОРЮ АСДЕР ЯКЕДСЧЫХИ БШБНД:
Warning: readfile() has been disabled for security reasons in 
/docroot/script.php on line 2


HIVE: All information for read only. Please respect copyright!
Hosted by hive йца: йХЕБЯЙЮЪ ЦНПНДЯЙЮЪ АХАКХНРЕЙЮ