Отображение изображения из каталога tmp - PullRequest
2 голосов
/ 20 мая 2010

У меня есть следующее. Веб-сайт, который временно создает изображения в папке / tmp на сервере Linux. Причина, по которой я храню ее в этой папке, заключается в том, что эти изображения необходимо время от времени очищать, и намного проще просто очистить каталог tmp с помощью tmpwatch. Теперь моя проблема заключается в отображении изображения в моем браузере?

код

<img src="/tmp/3d34636.png" alt="image" />  

Я использую Centos с PHP

Ответы [ 3 ]

2 голосов
/ 20 мая 2010

@ Дидье уже обрисовал проблему и риски для безопасности.Даже если вы создали PHP-скрипт, который принимает имя файла в качестве параметра и затем проходит через файл из каталога /tmp, вы будете смешивать общедоступный контент с временными файлами, которые могут содержать конфиденциальные данные.Вам нужно будет сохранить список файлов, которые были сгенерированы вашим сценарием и которые можно отобразить, а какие нет, иначе это будет дыра в безопасности.это несмотря на преимущества, и хранить ваши изображения в подкаталоге своих.Часто удаляйте их (например, с помощью задания cron или по возрасту файла или времени последнего обращения).

1 голос
/ 20 мая 2010

Вы можете заставить tmpwatch очистить другой каталог, создав задачу cron, которая запускает команду:

/usr/sbin/tmpwatch -umc 240 /path/to/directory

240 - это количество часов, в течение которых файлы не использовались до удаления (в данном случае 10 дней). См. man tmpwatch для получения полной информации.

1 голос
/ 20 мая 2010

Проблема здесь в том, что этот тег img будет обрабатываться браузером (клиентом). Этот клиент не имеет доступа к файловой системе HTTP-сервера.

Следовательно, вы должны либо указать каталог / tmp, чтобы он был допустимым местоположением вашего HTTP-сервера, используя файлы в каталоге / tmp / (но учтите, что он будет обслуживать любой другой файл, содержащийся в этом каталоге, что потенциально может обеспечить риск).

Или вы сохраняете эти сгенерированные изображения в подкаталоге, который уже обслуживается вашим HTTP-сервером.

Возможно также определить местоположение / tmp на сервере, который будет обслуживаться скриптом, который будет анализировать URL-адрес, содержащий имя файла изображения. Этот скрипт затем откроет файл в / tmp / и обработает его.

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