Как защитить изображения пользователя на сервере?

Мое веб-приложение очень простое. Есть две кнопки: одна называется «сохранить», а другая — «показать мои изображения». По сути, пользователь может сохранять изображения из API Facebook и хранить их в папке сервера с именем «резервная копия» (для резервного копирования своих изображений на сервере, чтобы, если они удалили свой FB или изображение из FB, у них была резервная копия)< /эм>.

  1. Когда пользователь нажимает «сохранить», изображения сохраняются в двух местах. URL-адрес изображения будет храниться в базе данных SQL, а также в папке сервера с именем «резервная копия»

  2. Когда они нажимают «показать изображения», он извлекает URL-адрес изображения из базы данных и отображает изображение. Однако при вызове checkImage() он проверит, действителен ли URL-адрес изображения. Если он недействителен, он извлечет то же изображение из «резервной копии» папки сервера.

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

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

Это возможно?

Причина, по которой я хочу это сделать, заключается в том, что я беспокоюсь о том, что URL-адрес изображения FB будет поврежден, и поэтому изображение не будет отображаться на веб-сайте.

function checkImage($url) {
    if (@getimagesize($url)) {
        echo  "image exists ";
    } else {
        echo  "image does not exist";
    }
}

person yellowAndriod    schedule 15.05.2016    source источник


Ответы (1)


Да, это возможно, и это хорошо

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

Позвольте мне объяснить вам, что вы можете сделать, чтобы сделать это возможным, поэтому, даже если администратор / кто-либо имеет ftp-доступ к папке, он / она вообще не сможет видеть изображения.

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

  • Размер файла
  • Тип изображения
  • Расширение изображения
  • Изображение Оригинальное название
  • Зашифрованное имя изображения
  • Путь к изображению
  • Пользователь изображения
  • Путь пользователя

Теперь позвольте мне объяснить вам, что эти столбцы будут означать для вашей системы.

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

Тип изображения должен быть типом файла, например: image/jpeg или image/png.

Расширение изображения Должно быть расширение изображения, которое вам нужно будет использовать для расшифровки изображения внутри вашей системы.

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

скажем, исходное имя изображения + расширение изображения будут использоваться внутри функции headers для php.

Зашифрованное имя изображения , это будет случайная строка без расширения файла, например:

скажем, у вас есть изображение с именем: myimage.jpeg, теперь вам нужно сохранить исходное имя файла и расширение в базу данных, а затем при использовании функции move_uploaded php переместить файл в папку пользователя (папка также может быть уникальной случайной строкой для каждого пользователя), затем просто переименуйте файл внутри процесса загрузки во что-то вроде 823982j3kkj2hjh3j2h323hj2h3jh23jh просто случайную строку без расширения внутри папки со случайной строкой, которая связана с пользователем, которого даже пользователь не знает, и сохраните это случайное имя строки вместе с другие детали изображения, а позже вам нужно будет идентифицировать изображение и переименовать его в исходное с расширением.

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

Изображение пользователя это, очевидно, идентификатор пользователя

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

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

Надеюсь, я дал вам представление о том, как вы можете это сделать.

person Arsh Singh    schedule 15.05.2016