Intereting Posts
Неопределенная переменная: ошибки – Laravel 5.2 Запросы POST от плагина grunt-connect-proxy не содержат данных Как я могу остановить PHP от возврата заголовков при выполнении из командной строки? Как отображать данные MYSQL в поле поиска PHP Как PHP ldap_search (), чтобы получить пользовательское подразделение, если я не знаю OU для базового DN Настройка php-функции так, чтобы она отображала ссылку в виде: – '/ widgets? Pg = 2' вместо 'products.php? Cat = 20 & pg = 2' Ошибка с JSON в javascript: неожиданный символ без пробелов после данных JSON ereg_replace для preg_replace для определенного регулярного выражения Codeigniter: Столбец 'id' в порядке заказа неоднозначен Каков наилучший способ хранения переменных класса в PHP? CakePHP – Заказ в $ hasMany модели игнорируется Свойство веб-фильтра CSS3-фильтра Где соль хранится для password_hash? PHP-методы, которые работают как в контексте, так и в статическом контексте? CMS построена на Zend Framework

PHP – другой open_basedir для каждого виртуального хоста

Я столкнулся с этой проблемой, у меня есть работающий apache и php. У нас много виртуальных хостов, но мы заметили, что потенциально злонамеренный пользователь может использовать свое веб-пространство для просмотра файлов других пользователей (через простой скрипт php) и даже системных файлов, это может произойти из-за прав на php. Способ избежать этого состоит в том, чтобы установить open_basedir var в php.ini, yhis очень прост в одной системе хоста, но в случае виртуальных хостов на каждом хосте будет basebir.

Могу ли я установить это на основе каждого пользователя / хоста? есть ли способ разрешить apache присвоить php-привилегии php-файла, который был запрошен

EG /home/X_USER/index.php имеет владельца X_USER, когда apache читает файл index.php, он проверяет свой путь и владельца, просто я ищу системный набор переменной php basedir для этого пути.

Заранее благодарю Lopoc

Можно установить open_basedir для каждого каталога, используя директиву Apache php_admin_value .

Пример из руководства :

 <Directory /docroot> php_admin_value open_basedir /docroot </Directory> 

Повторите свой комментарий: да, внешние команды не затрагиваются open_basedir – при вызове ls / это делается с правами, которыми управляет PHP PHP (часто называемый www или подобным). Насколько я знаю, расширение open_basedir для внешних команд невозможно.

В этом случае я не думаю, что вид защиты, который вы ищете, возможен в обычной настройке Apache / PHP. Единственное, что может приблизиться, – это запустить Apache в тюрьме chroot . Я не делал этого сам, поэтому ничего не могу сказать об этом – вам придется вникать и, возможно, задать вопрос именно об этом.

Вы можете установить множество настроек php.ini с помощью файла конфигурации Apache.

См. Соответствующие страницы из руководства по PHP: http://php.net/manual/en/configuration.changes.phphttp://www.php.net/manual/en/ini.core.php#ini. sect.path-directory – http://www.php.net/manual/en/configuration.changes.modes.php

chroot – хорошая идея. И теперь докер более эффективен.

и open_basedir с «/ docroot» не является безопасностью, вы должны заканчивать «/», или PHP может получить доступ / docroot1