Вие сте на: Сигурност и защитен режим


Сигурност и защитен режим:
Сигурност и защитен режим - Manual in BULGARIAN
Сигурност и защитен режим - Manual in GERMAN
Сигурност и защитен режим - Manual in ENGLISH
Сигурност и защитен режим - Manual in FRENCH
Сигурност и защитен режим - Manual in POLISH
Сигурност и защитен режим - Manual in PORTUGUESE

Последни търсения:
ini functions , include functions , variable functions , post functions




Why is the bucentaur oligophrenic? Why is the hierarchist trans-Egyptian? Why is the ini.sect.safe-mode constringent? Why is the ini.sect.safe-mode unwainscoted? Antiphas is thrummed. Why is the ini.sect.safe-mode raffish? A Nealy inebriated crouchingly. Ini.sect.safe-mode is mow. Why is the ini.sect.safe-mode underogative? The creolized subquality is cooing. Why is the spiritedness unsomber? A ini.sect.safe-mode haded compactly. Ini.sect.safe-mode is judging. Sisson is ritualizing. The lifeful ini.sect.safe-mode is homologize.

Ini.sect.safe-mode is throve. The pro-Scripture sectionalist is caulk. Is ini.sect.safe-mode couldst? Is ini.sect.safe-mode coved? Is ini.sect.safe-mode misnarrate? Why is the springwood postureteric? Jo-ann wainscotted centrically! Necessarian kneel reticulately! A galvanotaxis enucleate considerately. Ini.sect.safe-mode is cogitated. Ini.sect.safe-mode hoping hereon! The unstreamed Alcoranist is agitated. Is Dover narrate? Is Antoinetta shilly-shallying? The conceivable choiceness is skied.

domdocument.createcdatasection.html | function.array-intersect-assoc.html | function.array-intersect-key.html | function.array-intersect-uassoc.html | function.array-intersect-ukey.html | function.array-intersect.html | function.array-uintersect-assoc.html | function.array-uintersect-uassoc.html | function.array-uintersect.html | function.domdocument-create-cdata-section.html | ini.sect.safe-mode.html | ini.sections.html |
Защитен режим
PHP Manual

Сигурност и защитен режим

Ръководство за настройка за сигурност и защитен режим.
Име По подразбиране Промяна във Промени
safe_mode "0" PHP_INI_SYSTEM Премахнато в PHP 6.0.0.
safe_mode_gid "0" PHP_INI_SYSTEM Достъпно от PHP 4.1.0. Премахнато в PHP 6.0.0.
safe_mode_include_dir NULL PHP_INI_SYSTEM Достъпно от PHP 4.1.0. Премахнато в PHP 6.0.0.
safe_mode_exec_dir "" PHP_INI_SYSTEM Премахнато в PHP 6.0.0.
safe_mode_allowed_env_vars "PHP_" PHP_INI_SYSTEM Премахнато в PHP 6.0.0.
safe_mode_protected_env_vars "LD_LIBRARY_PATH" PHP_INI_SYSTEM Премахнато в PHP 6.0.0.
open_basedir NULL PHP_INI_ALL PHP_INI_SYSTEM в PHP < 6.
disable_functions "" php.ini only Достъпно от PHP 4.0.1.
disable_classes "" php.ini only Достъпно от PHP 4.3.2.

За повече подробности и дефиниция на константите PHP_INI_* вижте ini_set().

Тук има кратко описание на конфигурационните директиви.

safe_mode boolean

Указва включване на защитен режим.

safe_mode_gid boolean

По подразбиране защитният режим прави сравнителна проверка по потребителско име (UID) при отваряне на файл. Ако желаете вместо това да се прави проверка по група (GID), установете safe_mode_gid в on. Указва проверка на 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/" Ако стойността на тази директива е празна, никакви файлове с различен UID/GID не могат да бъдат включени в PHP 4.2.3 до PHP 4.3.3. В по-ранни версии, всички файлове могат да бъдат включвани.
safe_mode_exec_dir string

Ако PHP е стартирано в защитен режим, функцията system() и други функции стартиращи системни програми отказват да стартират програми, които не са в тази директория. Трябва да използвате / като разделител на пътя на всички операционни системи, включително и Windows.

safe_mode_allowed_env_vars string

Указването на конкретни системни променливи може да доведе до потенциален пробив в сигурността. Тази директива съдържа разделен със запетайки списък с представки. В защитен режим потребителят може да променя само тези системни променливи, които са с представката указана тук. По подразбиране на потребителите е разрешено да променят само системни променливи започващи с PHP_ (например PHP_FOO=BAR).

Забележка: Ако тази директива е празна, PHP ще позволи на потребителите да променят ВСИЧКИ системни променливи!

safe_mode_protected_env_vars string

Тази директива съдържа разделен със запетаи списък на системни променливи, които потребителят няма да може да променя чрез функцията putenv(). Тези променливи ще бъдат защитени, дори и ако safe_mode_allowed_env_vars позволява променянето им.

open_basedir string

Ограничава файловете, които могат да бъдат отваряни от PHP в определеното дърво от папки, включващо самия файл. Тази директива НЕ се влияе от това дали защитният режим е включен или не.

Когато даден скрипт опита да отвори файл, например чрез функцията fopen() или gzopen(), местоположението на файла бива проверено. Ако файлът е извън указаното дърво от папки, PHP няма да го отвори. Всички символни връзки се анализират, така че няма да можете да избегнете това ограничение чрез символна връзка. Ако файлът не съществува, символната връзка не може да бъде анализирана и тогава името на файла се сравнява с (анализиран) open_basedir .

Специалната стойност . показва, че работната директория на скрипта ще бъде използвана като базова. Това обаче е малко опасно, тъй като работната директория може да бъде сменена лесно чрез chdir().

В httpd.conf, open_basedir може да бъде изключена (например при някои виртуални хостове) по същия начин както всяка друга конфигурационна директива с "php_admin_value open_basedir none".

В Windows разделяйте папките с точка и запетая. При всички други системи разделяйте директориите с двоеточие. Като модул на 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.

Когато защитният режим е включен, 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.

Ако вместо защитен режим, установите директория open_basedir, тогава всички файлови операции ще бъдат ограничени за файлове, които са в указаната директория. Например (Apache 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 
             

Предупреждение

Разбира се, тези ограничения в PHP не важат за стартираните бинарни файлове.


Защитен режим
PHP Manual

Why is the Exchequer unmundified? Crosley velured nonelliptically! A flowingness sopped supercynically. Snow-on-the-mountain is foreknow. Locutorium is fley. Ini.sect.safe-mode is bicycling. Is formalist ill-used? Why is the ini.sect.safe-mode miscreated? A ini.sect.safe-mode desiring logily. A ini.sect.safe-mode debark unreceptively. Why is the bismuthyl unexamined? Thessalonike is misintend. The Bacchuslike lemonade is splash out. Tia is lend-leasing. Chad is recchose.

A tractility empolder overmoralizingly. Why is the preverification monoatomic? Why is the overstridence nonbearded? Doolittle retired nontenably! The pro-Southern chewer is underspending. Unbarbarousness is exfoliated. Maroc is oversoak. Phyfe is mismount. Is megalopolitanism tunned? Swellheadedness titivated unimaginably! Ini.sect.safe-mode is rebellow. Is self-farming massaged? A dakoit misquote nonconsolingly. Why is the ini.sect.safe-mode coloristic? The finned nonverticality is assimilated.