В данной статье я расскажу как изолировать Apache(точнее запретить скриптам вылазить за свои папки).
Изоляция делается несколькими строчками в конфиге Apache.
В фаил конфигурации вирт. хоста после
- Код: Выделить всё • Развернуть
DocumentRoot "/путь_до_папки_с_хостом"
Добавляем:
- Код: Выделить всё • Развернуть
php_admin_value open_basedir /путь_до_папки_с_хостом/
php_admin_flag safe_mode off
php_admin_value file_uploads 1
php_admin_value upload_tmp_dir /путь_до_папки_с_хостом/tmp
php_admin_value session.save_path /путь_до_папки_с_хостом/tmp
Теперь рассмотрим все подробно:
Параметры:
php_admin_value open_basedir - говорит php за пределы какой папки он не должен выходить
php_admin_flag safe_mode - определяет включён ли для данного хоста безопастный режим(off -выключен, on - включен)
php_admin_value file_uploads - определяет возможность загрузки файлов(1 - разрешено, 0 - запрещено)
php_admin_value upload_tmp_dir - определяет папку для временного хранения загруженного файла. Ибо если указан параметр open_basedir то php будет ломится в стандартную папку..тоесть за пределы разрешённой папки и в результате выдаст ошибку что мол я не могу...
php_admin_value session.save_path - примерно то же что и выше только папка для хранения сессий php.
Все.Теперь даже если вам на ПК и попадет shell скрипт то он не сможет выйти за пределы проекта.
И еще одно. Советую отключить в php следующие функции
- Код: Выделить всё • Развернуть
dl, shell_exec, exec, system, passthru, proc_open, proc_nice, socket_create, socket_open, proc_get_status, proc_close, proc_terminate, posix_mkfifo,popen
Чтобы полностью обезопасить себя.