защищать доступ к файлу пользователей, доступ к которому может получить только владелец?

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

Solutions Collecting From Web of "защищать доступ к файлу пользователей, доступ к которому может получить только владелец?"

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

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

Например, чтобы отобразить изображение:

// Check permissions... // If permissions OK: $img = file_get_contents("/path/to/image.jpg"); // Send jpeg headers header("Content-type: image/jpeg"); // Dump out the image data. echo $img; exit(); 

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

Типичный способ сделать это – это что-то вроде …

  • Загружается файл
  • Файл перемещается в каталог, недоступный из Интернета.
  • Идентификатор создается для файла и сохраняется в базе данных

Затем пользователи используют идентификатор для запроса файла с сервера.

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

Например, чтобы прочитать jpeg-образ в PHP:

 <?php header('Content-type: image/jpg'); readfile('/path/to/image.jpg'); 

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

 <? sessuion_start(); file_exists($_SESSION['specialkey']_$_GET['realfilename']){ include(/* include the file */); // or readfile //or header location, but then the rteal URL will become visible }else{ die('acces denied'); } 

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

вы можете захотеть сохранить файлы в каталоге, доступном только из PHP

вместо включения вы можете использовать метод Яни Хартикайнен