Назад | Перейти на главную страницу

Защитите доступ к статическим файлам с помощью Apache & Session

/assets
 - file1.mp3
 - file2.mp3
 ...
 - fileX.mp3

(миллионы файлов)

Поэтому я хочу предотвратить прямой доступ к контенту, если пользователь не вошел в систему, например http://domain.com/assets/file1.mp3

В идеале URL-адрес файла ресурса будет изменяться каждый раз, когда пользователь входит в систему, используя его сеанс, например http://domain.com/assets/51303ca30479c7a79b75373a/file1.mp3

как это сделать? так что цель - часто менять URL-адреса и до перенаправления на настоящий двоичный файл.

Я понимаю, что могу сделать что-то подобное

RewriteRule ^(.*\.mp3)$ /path/to/auth.php?i=$1

Но я предпочитаю не использовать PHP для обработки auth. Есть ли элегантный способ решения этой проблемы с помощью apache?

спасибо дмитрий

Существует ряд проблем с безопасностью, связанных с использованием короткоживущих URL-адресов в том виде, который вы предлагаете.

  • URL-адреса и файлы будут кэшироваться в прокси-серверах и на компьютерах пользователей.

  • Панели инструментов браузера (особенно те, которые поставляются компаниями, которые запускают сканеры, такие как Alexa, Google, Netcraft, Yahoo и т. Д.), Могут сообщать URL-адреса своим материнским компаниям, чтобы указать, что бот должен прийти и просканировать этот URL.

  • Если вы не используете SSL, URL-адреса и содержимое файлов легко доступны для всех, кто попадает в сетевой путь. Как правило, это касается всех, кто пользуется тем же общим Wi-Fi-соединением, что и пользователь, и, поскольку бесплатный открытый Wi-Fi становится все более и более распространенным, это вероятный сценарий.

  • Ваши недолговечные URL-адреса недостаточно долговечны. Если пользователь входит в систему только один раз в день, у любого, на кого происходит утечка URL, будет 24 часа, чтобы получить его.

  • Если эта длинная строка в URL-адресе является идентификатором сеанса пользователя, вероятно, произойдет утечка тем же способом, что и для URL-адресов выше, но идентификатор сеанса более чувствителен. Знание идентификатора сеанса позволяет злоумышленнику захватить сеанс. Так работает расширение Firesheep. Пытаясь сохранить в секрете изображения таким образом, вы фактически подвергнете своих пользователей большему риску.

Используя обычный метод Печенье для хранения идентификаторов сеансов предотвращает утечку кеширования и панели инструментов браузера. С помощью SSL предотвращает прослушивание сети и некоторое кеширование. С помощью стандартная HTTP-аутентификация с одним из модулей аутентификации Apache позволяет избежать использования PHP.

Нет проблем с использованием PHP (посмотрите, например, https://stackoverflow.com/questions/2187200/using-php-apache-to-restrict-access-to-static-files-html-css-img-etc).

Но если вы не хотите его использовать, вы можете ознакомиться с этими ответами на соответствующие вопросы: https://stackoverflow.com/questions/6325712/deny-direct-access-of-file-except-server-localhost и https://stackoverflow.com/questions/12299556/restrict-html-files-access.