/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.