Страница 1 из 1
apache php как защитить директории сервера
Добавлено: 2009-03-04 17:19:29
shuk007
Здраствуйте!
У меня на серваке на одном ip стоит несколько сайтов (VirtualHost)
И проблемма в том что с помощю функции dir() в пхп я смогу сканировать все каталоги сервера.
Я вкючил безопасный режим в пхп но не чего не изменилось.
ПОЖАЛУЙСТА помогите как сделать чтобы скрипт вне корневого каталога сайта не срабатывало, не сканировало....
Re: apache php как защитить директории сервера
Добавлено: 2009-03-04 17:25:08
zg
Re: apache php как защитить директории сервера
Добавлено: 2009-03-04 17:33:10
shuk007
я включил safe_mode НО к сожалению ничего не изменилось или я что то не то сделал
В php.ini изменил вот такие строчки:
были Off изменил их на
Re: apache php как защитить директории сервера
Добавлено: 2009-03-04 17:36:29
zg
не не не, сэйф моде работает только с владельцами и группой, а есть ещё
Код: Выделить всё
open_basedir string
Ограничивает список файлов, которые могут быть открыты в PHP, указанным деревом директорий независимо от того, используется защищенный режим или нет.
Каждый раз, когда скрипт пытается открыть файл, например, при помощи функции fopen() или gzopen(), проверяется месторасположение файла. В случае, если он находится вне указанного дерева директорий, PHP отказывает в открытия файла. Все символические ссылки распознаются и преобразуются, поэтому обойти это ограничение при помощи символических ссылок невозможно.
Специальное значение . указывает, что базовой следует считать директорию, в которой расположен сам скрипт. В этом случае следует быть осторожным, так как рабочую директорию скрипта можно легко изменить при помощи функции chdir().
Опция open_basedir может быть отключена в конфигурационном файле httpd.conf (например, для некоторых виртуальных хостов) точно таким же образом как и любая другая директива: "php_admin_value open_basedir none".
Для Windows-систем разделителем списка директорий служит точка с запятой. Для всех других операционных систем в качестве разделителя используется двоеточие. В случае, если PHP работает как модуль веб-сервера Apache, все указания open_basedir для родительских директорий наследуются.
Указанное значение в действительности является префиксом, а не названием директории. Это означает, что запись "safe_mode_include_dir = /dir/incl" позволяет открывать файлы, находящиеся в директориях "/dir/include" и "/dir/incls", в случае, если они существуют. Если вы хотите указать доступ к конкретной директории, используйте завершающий слеш, например: "safe_mode_include_dir = /dir/incl/".
это написано в
http://ru.php.net/manual/ru/ini.sect.safe-mode.php
Re: apache php как защитить директории сервера
Добавлено: 2009-03-04 17:45:18
shuk007
Огромное вам спасибо!!
Вы не могли бы одну пример привести пожалуйста
У меня в httpd.conf VirtualHost ы таким образом сконфигурированы:
Код: Выделить всё
<VirtualHost xxx.xxx.xxx.xx:80>
ServerName example.com
ServerAlias texample.com www.example.com
ServerAlias www.exampleftp.com
DocumentRoot /data/home/public_html/example.com
ServerAdmin webmaster@example.com
UseCanonicalName off
<IfModule mod_suphp.c>
suPHP_UserGroup www www
</IfModule>
</VirtualHost>
<VirtualHost xxx.xxx.xxx.xx:80>
ServerName example2.com
ServerAlias texample.com www.example2.com
ServerAlias www.exampleftp2.com
DocumentRoot /data/home/public_html/example2.com
ServerAdmin webmaster@example2.com
UseCanonicalName off
<IfModule mod_suphp.c>
suPHP_UserGroup www www
</IfModule>
</VirtualHost>
вот таким образом я использовал:
Код: Выделить всё
<VirtualHost xxx.xxx.xxx.xx:80>
ServerName example2.com
ServerAlias texample.com http://www.example2.com
ServerAlias http://www.exampleftp2.com
DocumentRoot /data/home/public_html/example2.com
ServerAdmin webmaster@example2.com
UseCanonicalName off
php_admin_flag safe_mode on
php_admin_flag safe_mode_gid on
php_admin_value open_basedir /data/home/public_html/example2.com
<IfModule mod_suphp.c>
suPHP_UserGroup www www
</IfModule>
</VirtualHost>
НО при перезагрузки Apachа пишет что модуль не включен:
Код: Выделить всё
root# /usr/local/etc/rc.d/httpd restart
Invalid command 'php_admin_flag', perhaps mis-spelled or defined by a module not included in the server configuration
Invalid command 'php_admin_value', perhaps mis-spelled or defined by a module not included in the server configuration
Re: apache php как защитить директории сервера
Добавлено: 2009-03-04 18:26:24
zg
Код: Выделить всё
<VirtualHost *:80>
ServerName dva.com
ServerAlias www.dva.com dva.ru www.dva.ru dva
ServerAdmin some@admin
DocumentRoot "/usr/local/www/apache22/data/dva"
<Directory "/usr/local/www/apache22/data/dva">
AllowOverride All
Order Deny,Allow
Allow from all
Options All
</Directory>
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html index.htm
php_admin_value open_basedir "/usr/local/www/apache22/data/dva"
</IfModule>
</VirtualHost>
Код: Выделить всё
zg# php "/usr/local/www/apache22/data/dva/index.php"
Root directory
Array
(
[0] => /COPYRIGHT
[1] => /bin
[2] => /boot
[3] => /cdrom
[4] => /compat
[5] => /dev
[6] => /dist
[7] => /etc
[8] => /home
[9] => /lib
[10] => /libexec
[11] => /media
[12] => /mnt
[13] => /proc
[14] => /rescue
[15] => /root
[16] => /sbin
[17] => /sys
[18] => /tmp
[19] => /usr
[20] => /var
)
zg# links -dump http://dva
Root directory
zg#
Re: apache php как защитить директории сервера
Добавлено: 2009-03-04 18:45:19
shuk007
а как установить mod_php5.c в Apache, у меня он не установлена
Re: apache php как защитить директории сервера
Добавлено: 2009-03-04 19:12:50
zg
shuk007 писал(а):установить mod_php5.c в Apache
Код: Выделить всё
zg# grep php /usr/local/etc/apache22/httpd.conf
LoadModule php5_module libexec/apache22/libphp5.so
zg#
Re: apache php как защитить директории сервера
Добавлено: 2009-03-13 15:03:48
shuk007
у меня не получилось
