2014-09-27 3 views
0

У меня есть сайт PHP, и я хочу, чтобы только зарегистрированные пользователи могли получать доступ к определенным данным и чтобы пользователи могли получать доступ только к данным, имеющим разрешение для доступа. Я не уверен, что это проблема с PHP или Apache. Предположим, что на сервере существует папка «Изображения». Если пользователь не вошел в систему, и запросы браузера могут отображаться из папки, будет ли перенаправление на другую страницу позаботиться об этом или мне нужно каким-то образом вовлечь Apache, чтобы убедиться, что пользователь абсолютно не может получить доступ к файлам, если только это сеанс PHP, который идентифицирует пользователя?Управление доступом и доступом к файлам и папкам (PHP/Apache)

+0

В зависимости от типа и размера файлов простой (и не-исполняемый) способ должен обрабатывать все файлы через php. Переместите папку в папку, не доступную для апачей, и сделайте, например. 'if ($ loggedin) {header ('Content-type: image/jpeg'); echo file_get_contents ('/ private/file.jpg'); } ' – tillz

ответ

1

Используйте php, чтобы проверить пользователя и использовать файл .htaccess, чтобы запретить любой доступ к этому каталогу, который не отправлен с php. Однако, если вы используете метод .htaccess, вам нужно будет получить изображение с помощью php, оно не будет доступно с помощью html или javascript. Поместите файл .htaccess в папке изображения:

deny from all 

с тем, что написано внутри файла .htaccess.

Тогда только php может обращаться к файлам внутри папки.

+0

Кажется, это путь. Теперь мне просто нужно научиться обслуживать файлы с помощью PHP. – goodbyeworld

0

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

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_COOKIE} !CookieName=Value [NC] 
RewriteRule .* http://www.example.com/members/login.php [L] 

Вы должны изменить три вещи:

  1. CookieName должен иметь имя, которое вы хотите.
  2. С Value за CookieName вы можете потребовать, чтобы файл cookie имел определенное значение.
  3. И, конечно, URL.

Теперь доступ будет предоставлен только в том случае, если в браузере присутствует правильный файл cookie. И, конечно, только пользователи, которые могут войти в систему, должны иметь этот файл cookie. Предполагаю, вы знаете, как сделать такой куки? Совет. Пусть файл cookie истекает достаточно быстро.

+0

Должно ли значение быть статическим? Потому что, если чей-то cookie будет захвачен, тогда у хакера будет доступ ко всем изображениям. Я не пытаюсь быть отрицательным. Мне просто любопытно, потому что я не знал, что вы можете это сделать, и хотите оценить его удобство для себя. –

+0

Да и нет. Значение, очевидно, статично, если, конечно, вы не напишите новый файл .htaccess с новым значением. Например, вы можете написать задание cron, которое будет изменять значение каждый день в 03:00. Но это, с правильным доступом и знаниями, всегда взломано, как вы правильно предполагали. Если вам нужна абсолютная защита, используйте метод передачи всего через PHP. –

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