PHP: может ли пустой index.html скрыть файлы в этом каталоге (если имена файлов неизвестны)?

Можно ли предотвратить доступ к таким файлам, как df9dfglh_56_ghf.mp3 в /www/pub/, с помощью пустого index.html файла? (но предоставляя доступ через index.php с логином к базе данных, которая затем ссылается на это имя файла)?

ОБНОВЛЕНИЕ: но я бы предпочел НЕ ограничивать доступ к каталогу, если я хочу воспроизвести файл в моем собственном «облачном проигрывателе» ... (немного похоже на категория YouTube: файл могут видеть только люди, у которых есть ссылка)

Итог: я хочу минимизировать трафик сервера или проблемы с авторскими правами (если эти файлы стали общедоступными)


person ajo    schedule 29.10.2012    source источник
comment
apache всегда указывает на индексный файл в папке, если имя файла не указано.   -  person Arun Killu    schedule 29.10.2012


Ответы (7)


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

<Files ~ "\.mp3$">
    Order allow,deny
    Deny from all
</Files>

В вашем конкретном случае вы даже можете использовать его так:

<Files "df9dfglh_56_ghf.mp3$">
    Order allow,deny
    Deny from all
</Files>

Если вы хотите, чтобы файл не был указан в индексе, вы можете использовать тот же файл, чтобы делать то, что сказал @Ynhockey, и выдавать конфигурацию:

Options -Indexes

Надеюсь, это помогло. Ваше здоровье

person Bruno Vieira    schedule 29.10.2012
comment
но это значит, что я не мог играть в стиле облачного плеера? - person ajo; 29.10.2012
comment
Да, вы можете играть в стиле облачного плеера, вы просто запрещаете пользователю доступ к вашему файлу, например yoursite.com/you-music-file.mp3. Доступ из ваших классов php нормальный - person Bruno Vieira; 29.10.2012

если вы установите внутри своей папки данных пустой

 index.html

Когда пользователь просматривает ..

http://yoursite/data/ 

он увидит пустую страницу и не увидит ваш mp3 файл ...

Но если он пойдет

http://yoursite/data/yourmp3name.mp3 

он откроет ваш мп3 ..

person Svetoslav    schedule 29.10.2012
comment
это идея. но могут ли другие люди получить список этих файлов? - person ajo; 29.10.2012

Просто имея index.html или index.php, вы отключили бы только список каталогов. Люди по-прежнему смогут получить доступ к любым файлам внутри этого каталога, если у них есть прямой URL-адрес.

Если вы хотите заблокировать доступ к определенным файлам, вам необходимо явно ограничить доступ к этим файлам. Вот хорошие ресурсы, чтобы начать с этого.

person Aamir    schedule 29.10.2012

Пустой индексный файл может препятствовать отображению списка каталогов, но не препятствует прямому доступу к файлам. Это также можно сделать, поместив следующую строку в ваш файл .htaccess:

Options -Indexes
person Ynhockey    schedule 29.10.2012

Я думаю, что вы имеете в виду список каталогов Apache, когда есть каталог без индекса. Да, пустой индекс скроет этот список, но нет, он не предотвратит доступ к файлам, если путь известен. Если эта политика «делиться ссылкой только с уполномоченными лицами» достаточно безопасна для вас, то это справедливо. Если вы хотите что-то более безопасное, вам следует подумать об использовании mod_auth или чего-то подобного или ограничить доступ, разрешив доступ только к файлу .php или чему-то подобному, что обеспечивает доступ только авторизованным пользователям.

person Andreas Hagen    schedule 29.10.2012

в принципе да, это отключит список файлов, но если пользователь знает точный путь, то он сможет просмотреть / загрузить данный файл. эффективный способ сделать то, что я думаю, вы пытаетесь сделать, - это поместить файлы в каталог, который не виден в Интернете, а затем обслуживать файлы через php. тогда ссылка будет чем-то вроде: domain.com/getfile.php?fileindetification=thefile, тогда в getfile.php вы можете аутентифицировать пользователя, а затем передать ему файл, вы можете сделать даже больше, вы можете сделать текущую ссылку действительной только на короткий период времени.

person Nikola    schedule 29.10.2012

лучше не хранить файл в корневой папке, чтобы никто посторонний не получил доступ к файлу.

person Arun Killu    schedule 29.10.2012