взял отсюда...По наводке от моего товарища Lice пришлось ковырять как закрыть от PHP-скриптов доступ в другие каталоги. дело в том, что если не установлен PHP как CGI модуль, то варианта два. Либо SafeMode + doc_root, что совсем не приятно и мне не нравится. Причины расписывать тут не буду, т.к. не хочется устраивать холивар. В общем, я пошел по другому пути. В каждый виртуальный хост Апача я добавил такую конструкцию:
php_admin_value open_basedir /var/www/user/Таки образом я избавился от неприятной вещи по типу fileread(’/etc/passwd’);.
Дальше больше. Lice по FTP залил какой-то ПХП-шный shell и стали тестировать. Как я и ожидал, каталоги то он увидел, а вот скачать что-либо, кроме как из своего каталога - никак.
Вот теперь надо отрубить system и exec с кучей всего еще. В php.ini мы правим:
disable_functions = “apache_get_modules,apache_get_version,apache_getenv,apache_note, apache_setenv,disk_free_space,diskfreespace,dl,highlight_file,ini_alter,ini_restore,openlog, passthru,phpinfo,proc_nice,shell_exec,show_source,symlink,system,exec”
Отдельное огромное спасибо Lice за помощь.
пятница, 4 апреля 2008 г.
Дополнительная защита веб-сервера
Подписаться на:
Комментарии к сообщению (Atom)
2 комментария:
У меня с basedir на одном хосте неудобство было как-то, при закачке файлов PHP кладет их в /tmp, и когда я их открываю, то получаю варнинги что папка /tmp не в basedir. Надо /tmp как-то к basedir причислить или перенести в каталог пользователя. Помню так и не сделал.
sin, это просто делается.
open_basedir /path/to/home:/tmp:/another/path
Отправить комментарий