доступ к защищенному паролем каталогу

у меня есть защищенная паролем папка /public_html/images, чтобы никто не мог видеть все изображения. Но теперь, когда я открываю php-страницу, на которой мне нужно отобразить определенный iamge, я получаю экран входа в систему. Как получить доступ к защищенной паролем папке с php


person subash    schedule 21.02.2011    source источник
comment
Как вы защищали паролем свои файлы?   -  person sarnold    schedule 21.02.2011
comment
на хостинговом сайте есть опция ... защищенные каталоги .... там я выбрал каталог и защищен ... я также создал идентификатор пользователя для доступа к нему ... но не знаю, как использовать в php, чтобы использовать это   -  person subash    schedule 21.02.2011
comment
PHP на самом деле не имеет легкого доступа к каталогам, защищенным базовой аутентификацией HTTP - он предоставляется или запрещается сервером HTTP перед выполнением любого выполнения скрипта.   -  person sarnold    schedule 21.02.2011


Ответы (2)


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

В качестве альтернативы, если вы хотите, чтобы все они находились в одной защищенной паролем папке, вам необходимо иметь PHP-скрипт на вашем сервере, который будет принимать аргумент имени файла. Считайте это изображение с диска, а затем отправьте его пользователю с правильными заголовками. Ваш html будет иметь что-то вроде следующего

<img src="image.php?name=foo.jpg">
person David Gillen    schedule 21.02.2011

Что вы хотите предотвратить? Вы хотите запретить кому-либо видеть имена файлов изображений, но разрешить им извлекать любое изображение, как только они узнают имя файла? В этом случае удалите привилегию чтения для этого конкретного каталога:

chmod 711 /path/to/directory

Таким образом, никто, кроме владельца каталога, не может получить список имен файлов из каталога, но доступ к файлам по-прежнему разрешен (1 — это просто привилегия выполнения для каталога, необходимая для «обхода каталога»).

Конечно, вы должны убедиться, что имена файлов изображений действительно трудно угадать, и надеяться, что ваши пользователи не будут распространяться по URL-адресам (что является простым способом обойти контроль доступа на обычных сайтах, таких как Facebook). Выполните приличные проверки контроля доступа в своей программе, если вы действительно хотите получить доступ только к аутентифицированным пользователям, авторизованным пользователям или чему-то подобному.

person sarnold    schedule 21.02.2011
comment
я не уверен, как запустить chmod 711 /path/to/directory ... не могли бы вы сказать мне, где это запустить - person subash; 21.02.2011
comment
@subash, вы запускаете его в оболочке на своем веб-хостинге. Как правило, вы можете использовать ssh для входа на сервер, чтобы выполнять такие команды. - person sarnold; 21.02.2011
comment
я получил это ... в файловом менеджере я вижу, чтобы изменить разрешение ... и это работает ... большое спасибо tttttttttttttttttttttt - person subash; 21.02.2011