Подписанный URL и сценарий для показа изображений или файлов - PullRequest
1 голос
/ 04 мая 2011

Подписанные URL являются путями, как показано ниже, это правильное имя для них?

    http://mydomain.tld/<randomhash>.<extension>

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

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

Таким образом, обмен между ними будет, и здесь я хотел бы знать, завершено ли это или есть еще что-то, чтобы рассмотреть:

  • подписанные URL должны быть сгенерированы, обслужены, отброшены после t
  • чем дольше, тем более небезопасно
  • чем короче путь, тем небезопаснее
  • даже при подаче через https, сниффинг URL-адреса дает кому-либо доступ в течение тайм-аута t
  • доступ после генерации

При обслуживании через php возникают проблемы:

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

Какой подход был бы лучше в целом? Если этого нельзя сказать, какие еще перспективы / проблемы следует рассмотреть?

1 Ответ

0 голосов
/ 20 июня 2011

Использование PHP (или любого другого языка) является хорошим вариантом здесь с без особых накладных расходов .Что бы я сделал:

  • с использованием Nginx или другого веб-сервера с возможностями X-forward (см., Например, mod_xsendfile на Apache)
  • с использованием хеша в параметре GET не может быть прослушан по каналу https (например: http://mydomain.tld/image?hash=)
  • при загрузке страницы PHP может проверить, является ли данный хэш правильным (даже без базы данных с простым вызовом file_exists)на <hash>.png/jpeg/etc.) и верните необходимые заголовки с переадресованным образом X
  • удалить / удалить ненужные изображения из защищенной папки по истечении времени
...