доступ к jpg, которого нет в веб-папке через PHP - PullRequest
0 голосов
/ 21 марта 2019

Недавно я нашел видео на YouTube, в котором рассказывалось о доступе к PDF в веб-браузере. Это было интересно, потому что, как я и подозревал, я мог получить доступ к PDF-файлу в любом месте системы (с учетом разрешений) и передать его через PHP в веб-браузер.

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

https://www.youtube.com/watch?v=z4a6QJSGL28

код выглядит примерно так

$file="/home/kodi/Pictures/scans/test.pdf";
$filename="test.pdf";

header('Content-type: application/pdf');
header('Content-disposition: inline; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
@readfile($file);

Итак, я проверил, и это работает, тогда я попробовал это

$file="/home/kodi/Pictures/scans/test.jpg";
$filename="test.jpg";

header('Content-type: application/jpg');
header('Content-disposition: inline; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
@readfile($file);

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

Я работал над приложением для локальной сети, которое может получать доступ к папкам пользователей на сервере с помощью аутентификации PAM, и использовал кодировку base64, однако я чувствовал, что если бы я мог сократить накладные расходы на изображения base64 (30%), преобразования и буквально конвертируя каждое изображение в список для отображения ссылок на них, система будет загружаться быстрее. Это определенно будет лучшим способом, но все говорят, что такого рода вещи не работают! Доказательство того, что есть надежда, что это сработает в файле, который я скачал с веб-сервера в папке пользователя.

Есть идеи, как заставить его работать с jpgs?

1 Ответ

0 голосов
/ 21 марта 2019

Ваш тип контента неправильный, это должно быть изображение / JPEG, а не приложение / JPG

...