2014-01-06 2 views
0

У меня есть пакет WAMP, установленный на моем ПК. Вчера я работал с файловой системой с PHP и заметил, что я могу получить доступ к любой директории на своем жестком диске даже выше корневого каталога документа сайта. Это явная проблема безопасности, которую я хочу избежать.Ограничение доступа к файловой системе WAMP

В настоящее время я использую несколько виртуальных хостов в стеке WAMP вместе с пользовательским доменом, используя файл hosts.

Я ищу некоторую конфигурацию, которую я могу сделать в файле httpd.conf или лучше, если это возможно, в файле .htaccess, который ограничит доступ скриптов на разных сайтах к их корню документов. Будет лучше, если код не потребует никаких изменений при добавлении или удалении виртуальных хостов.

+0

Может ли PHP получить доступ к файлам браузера над папкой 'DocumentRoot'? – anubhava

+0

@anubhava Да, даже он может удалить их –

+0

Вот почему вы не устанавливаете wamp. Apache не предоставляет способ редактирования или удаления списков каталогов. Что вы видите, что позволяет удалять файлы? Это самый простой ответ http://stackoverflow.com/a/4400412/46675 –

ответ

0

Люди никогда не должно быть в состоянии получить доступ к папкам вы не разрешаетесь использовать в любых виртуальных хостах в сочетании с .htaccess файлами

Если у вас есть виртуальный хост, скажем ben.mydevelopment какие маршруты в определенную папку , не будет никакого способа «подняться», вы не сможете получить доступ к папкам «выше» этого.

Вы можете использовать файл .htaccess, чтобы запретить доступ к определенным папкам с помощью

Deny from all 

и поместить его в соответствующих папках. Вы не можете заблокировать целую файловую систему, так как apache не должен обслуживать всю файловую систему для начала.

Можете ли вы перечислить папки, к которым вы могли получить доступ, и те, на которых выполняется apache (либо через главный конфиг, либо виртуальные хосты)?

(Примечание. Кроме того, я бы не стал слишком беспокоиться о том, что люди могут получить доступ к вашим данным, большинство брандмауэров запрещают входящие соединения по HTTP, и почти все домашние маршрутизаторы отказываются от входящих соединений и не знают, какой компьютер их подключает поэтому, если вы не намерены пытаться настроить свой собственный веб-сервер, то вам должно быть хорошо)

+0

Я пытаюсь помочь, я предоставил все советы, которые я могу предоставить, с ограниченной информацией, которую вы предоставили. Чем могу помочь? – BLewis

+0

Это не то, что я ищу. Я хочу, чтобы PHP не обращался к другим каталогам. –

+0

Просто примечание: я не замедлил. Это кто-то еще –

2

Я думаю, что вы приближаетесь к этому с неправильной точки зрения.

По умолчанию Apache должен быть сказал он имеет доступ к ничего на диске, поставив что-то вроде этого в файле httpd.conf

<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
    Order deny,allow 
    Deny from all 
</Directory> 

Тогда в каждом из ваших виртуальных хостов definintions вы указать, какие каталоги этого сайта имеет такой доступ.

<VirtualHost *:80> 
    DocumentRoot "C:/websites/www/site1" 
    ServerName site1.dev 
    ServerAlias www.site1.dev 
    Options Indexes FollowSymLinks 
    <Directory "C:/websites/www/site1"> 
     Order Deny,Allow 
     Deny from all 
     # This is my development version of site1.com and only allowed to be used on my internal network 
     Allow from 127.0.0.1 localhost ::1 192.168.2 
    </Directory> 
    ErrorLog "C:/websites/dev_logs/apache_error.log" 
    CustomLog "d:/websites/dev_logs/apache_access.log" combined 
</VirtualHost> 

В качестве альтернативы, если вы хотите разрешить доступ из Интернета изменить Order и Allow как этот

<VirtualHost *:80> 
    DocumentRoot "C:/websites/www/site1" 
    ServerName site1.com 
    ServerAlias www.site1.com 
    Options Indexes FollowSymLinks 
    <Directory "C:/websites/www/site1"> 
     Order Allow,Deny 
     # This is the live site can be accessed from the internet 
     Allow from all 
    </Directory> 
    ErrorLog "C:/websites/live_logs/apache_error.log" 
    CustomLog "d:/websites/live_logs/apache_access.log" combined 
</VirtualHost> 

Используя этот механизм, вы знаете, что по умолчанию Apache не может получить доступ к любым папкам в системе, не специально предоставление доступа из определения виртуальных хостов.

Смежные вопросы