Safe mode php linux

PHP 7 – настройка файла PHP.INI

Конфигурационный файл php.ini является основным инструментом настройки ядра PHP . Он считается каждый раз при инициализации PHP . Если изменение не отображается, не забудьте остановить и перезапустить httpd . Если внесенные изменения до сих пор действуют, используйте функцию phpinfo() , чтобы проверить, php ini где лежит.

Файл конфигурации хорошо прокомментирован и подробно проработан. Параметры чувствительны к регистру, значения ключевых слов – нет; пробелы и строки, начинающиеся с точки с запятой, игнорируются. Логические значения могут быть представлены как 1/0 , Yes/No , On/Off или True/False . Значения по умолчанию в php.ini повлияют на установку PHP , которую позже можно будет настроить.

В этой статье мы рассмотрим важные настройки в файле php.ini , которые могут потребоваться для PHP парсера.

short_open_tag = Off

Короткие открытые теги выглядят так: . Для этого параметра должно быть установлено значение Off , если вы хотите использовать функции обработки XML .

safe_mode = Off

Если этот параметр имеет значение ON , вероятно, вы скомпилировали PHP с флагом enable-safe-mode . Безопасный режим наиболее важен для использования CGI .

safe_mode_exec_dir = [DIR]

Эта опция имеет значение только в том случае, если включен безопасный режим. Она также может быть установлена с флагом —with-exec-dir во время процесса сборки Unix . PHP в безопасном режиме выполняет внешние двоичные файлы только из этого каталога. По умолчанию используется каталог /usr/local/bin . Это не имеет ничего общего с обслуживанием обычной PHP/HTML веб-страницы.

safe_mode_allowed_env_vars = [PHP_]

Эта опция php ini задает, какие переменные окружения пользователи могут изменить в безопасном режиме. По умолчанию, только те переменные, к которым добавлено « PHP_ ». Если эта директива пуста, то большинство переменных можно изменять.

safe_mode_protected_env_vars = [LD_LIBRARY_PATH]

Параметр устанавливает, какие переменные окружения пользователи не могут изменить в безопасном режиме, даже если опция safe_mode_allowed_env_vars включена.

disable_functions = [function1, function2. ]

Довольно полезным дополнением в конфигурации PHP4 , которое сохранилось и в версии PHP5 , является возможность отключения выбранных функций по соображениям безопасности. Раньше это требовало ручной правки кода на языке C , на котором был написан интерпретатор PHP . Функции файловой системы, операционной системы и сети должны быть первыми в этом списке, потому что возможность записи файлов и изменения системы через HTTP не является безопасным.

max_execution_time = 30

При настройке php ini нужно знать, что функция set_time_limit() не будет работать в безопасном режиме. Поэтому это основной способ реализовать задержку выполнения скрипта в безопасном режиме. В Windows вы должны выполнить принудительное завершение, основываясь на максимальном уровне потребляемой памяти, а не на времени. Также можно использовать настройку таймаута Apache для реализации задержки. Но она будет применена и к файлам сайта, не являющимся PHP .

Читайте также:  Графический интерфейс kde linux

error_reporting = E_ALL & ~E_NOTICE

Значением по умолчанию является E_ALL & ~E_NOTICE , все ошибки кроме уведомлений. Для серверов должно быть установлено, как минимум, значение по умолчанию. И только на основных серверах можно использовать меньшее значение.

error_prepend_string = [«»]

Вместе с error_append_string этот параметр позволяет выделить сообщения об ошибках другим цветом.

warn_plus_overloading = Off

Этот параметр выдает предупреждение, если оператор « + » используется со строками, как при формировании значения поля формы.

variables_order = EGPCS

Заменяет gpc_order . Обе версии устарели вместе с register_globals . Он устанавливает порядок различных переменных: Environment , GET , POST , COOKIE и SERVER ( или Built-in ). Вы можете изменить этот порядок. Переменные будут последовательно перезаписаны слева направо, при этом самый правый всегда « выигрывает ». Это означает, что если оставить значение по умолчанию и использовать одно имя для переменной среды, переменной POST и переменной COOKIE , то, в конце концов, имя будет принадлежать переменной COOKIE .

register_globals = Off

Этот параметр php ini set позволяет определить, нужно ли регистрировать переменные EGPCS как глобальные. В настоящее время этот способ устарел, и, начиная с PHP 4.2 , этот флаг по умолчанию установлен в значение Off . Вместо него используйте суперглобальные массивы.

gpc_order = GPC

magic_quotes_gpc = On

Экранирует кавычки во входящих данных GET/POST/COOKIE . Если вы используете много форм, которые отправляют данные сами себе или другим формам, и отображают значения форм, нужно активировать эту директиву или использовать функции addslashes() для данных строкового типа.

magic_quotes_runtime = Off

Этот параметр экранирует кавычки во входящих строках базы данных и текстовых строках. Помните, что SQL добавляет слеш в одинарные кавычки и апострофы при сохранении строк и не убирает их при возвращении строк. Если этот параметр выключен, необходимо использовать функцию stripslashes() при выводе любых типов строковых данных из БД SQL . Если для magic_quotes_sybase установлено значение On , то этот параметр должен быть Off .

magic_quotes_sybase = Off

Экранирует одиночные кавычки во входящих строках базы данных и текстовых строках с одиночными кавычками в стиле Sybase , а не обратным слешем. Если для параметра magic_quotes_runtime установлено значение On , данный параметр должен быть отключен.

auto-prepend-file = [path/to/file]

Если в этом параметре php ini указан путь, PHP должен автоматически добавить конструкцию include() в начало каждого PHP-файла . Следует учитывать ограничения для путей включаемых файлов.

auto-append-file = [path/to/file]

Если в этом параметре указан путь, PHP должен автоматически ввести конструкцию include() в конец каждого PHP-файла , кроме случаев, когда осуществляется выход с помощью функции exit () . Следует учитывать ограничения для путей включаемых файлов.

include_path = [DIR]

Если установить это значение, вам будет разрешено включать или запрашивать файлы только из указанных каталогов. Каталог include обычно находится под корневым документом. Это необходимо, если вы работаете в безопасном режиме. Установите для параметра значение .in , чтобы включить файлы из каталога, в котором находится ваш скрипт. Несколько каталогов разделяются двоеточиями: .:/usr/local/apache/htdocs:/usr/local/lib .

Читайте также:  Менеджер лицензий hasp linux

doc_root = [DIR]

При настройке php ini если вы используете Apache , то в файле httpd.conf корневой каталог документа для этого сервера или виртуального хоста уже задан. Установите это значение здесь, если используете безопасный режим или хотите разрешить PHP только для части сайта ( например, только в одном подкаталоге ).

file_uploads = [on/off]

Активируйте этот флаг, если загружаете файлы с помощью PHP-скрипта .

upload_tmp_dir = [DIR]

Не удаляйте комментарии из этой строки, если не понимаете, что такое HTTP-загрузка !

session.save-handler = files

За исключением редких случаев изменять этот параметр не нужно.

ignore_user_abort = [On/Off]

Определяет, что произойдет, если посетитель сайта нажмет в своем браузере кнопку « Остановить ». По умолчанию установлено значение On , которое означает, что скрипт продолжит работать до завершения или таймаута. Если изменить значение данного параметра на Off , скрипт будет прерван. Этот параметр работает только в режиме модуля, а не в CGI .

mysql.default_host = hostname

Хост-сервер по умолчанию, используемый при подключении к серверу базы данных, если не указан другой узел.

mysql.default_user = username

Этот параметр php ini задает имя пользователя по умолчанию, используемое при подключении к серверу базы данных, если другое имя не указано.

mysql.default_password = password

Пароль по умолчанию, используемый при подключении к серверу базы данных, если не указан другой пароль.

МЛ Мария Логутенко автор-переводчик статьи «

Источник

Safe mode php linux

Apache and PHP security settings under Linux

PHP safe mode is on, PHP5.3 there will be no safe mode.

(1) safe_mode: php is running in safe mode;

In the php.ini file, use the following

Corresponding method is provided in the apache httpd.conf VirtualHost of

  • php_admin_flag safe_mode On (Use Safe Mode)
  • php_admin_flag safe_mode Off (turn off safe mode)
  • php_admin_value safe_mode 1 (use safe mode)
  • php_admin_value safe_mode 0 (turn off safe mode)

(2) safe_mode_include_dir: without UID / GID check directory;

(3) open_basedir: user-operable in a directory file limits;

a, in the Apache httpd.conf Directory appropriate settings:

php_admin_value open_basedir /usr/local/apache/htdocs/:/tmp/

b, set in php.ini open_basedir =:. / tmp /, this setting means that allow access to the current directory (ie PHP file directory), and / tmp / directory.

(4) disable_functions: setting disables function;

A typical security configuration

disable_functions = shell_exec,system,exec,passthru,show_source,get_cfg_var,dl

If the user allows the debugger, the configuration is as follows:

disable_functions = shell_exec,system,exec,passthru

(5) register_globals: Prohibition register globals;

  • register_globals = On (automatically registered as global variables)
  • register_globals = Off (not registered as global variables)

(6) magic_quotes_gpc: make sensitive characters escape

A corresponding method is provided in the Apache httpd.conf VirtualHost of:

Источник

What is PHP Safe Mode GID?

By default, Safe Mode does a UID compare check when opening files. If you want to relax this to a GID compare, then turn on safe_mode_gid. Whether to use UID (FALSE) or GID (TRUE) checking upon file access.

To a PHP script running on a web server, what is the difference between a UID (User Identifier) check and a GID (Group identifier) check?

Читайте также:  Linux mount check if is mounted

4 Answers 4

This will just allow you a little more flexibility in your web server setup. Using safe_mode_gid, you should be able to run individual PHP/httpd processes for each user on your system, but give each process the ability to read some shared files as long as they are all run as the same group (GID) and the shared files are owned by this group.

For example the webserver username and group is apache:www,

if you set your to check UID, the php process will only have access to any file owned by the user apache. So if you have another webserver running on your system,for example tomcat with the username and group of tomcat:www, any files created by the tomcat process won’t be accessible by php because it is owned by the tomcat user.

But if you instead use GID check, the files created by the tomcat process will be readable by the php process because the belong to the same www group

Safe mode UID check is used to prevent users from accessing other peoples files. GID is used to prevent a GROUP of users from accessing other GROUPS files.

Most answers are not exactly true or detailed. Don’t forget safe_mode checks if the owner of the SCRIPT matches the owner of the file you want to access. It has nothing to do with the httpd user:group.

For example, your httpd could run as apache:daemon , your script owned by some_user:users and the file you want to write to some_other_user:users .

If you don’t activate safe_mode_gid , the script won’t be able to access the file because users don’t match.

This is a common phenomenon when a script creates a folder and then tries to create files inside this folder.

The folder creation succeeds because the parent folder is owned by the same user as the script creating it (most likely, it was uploaded by «some_user»).

BUT, the created folder is now owned by the httpd user, let’s say apache:daemon

If safe_mode is active, you won’t be able to create a file inside this folder because the script owner ( some_user ) doesn’t match the folder owner ( apache ).

Even if you activate safe_mode_gid , it won’t work because the script group is «users» while the folder group is «daemon».

The best solution is to set the same group for ftp users and httpd. Don’t forget you have to allow write access to the group on the «writeable» folder too, and this is less secure because since all your users are in the same group, an httpd process could access the other users files since you activate safe_mode_gid .

You should in fact combine safe_mode_gid + open_basedir and set the home of the user as open_basedire value to avoid this.

Источник

Оцените статью
Adblock
detector