#файлы #php #ссылки #шифрование
Вопрос довольно популярный, объясните пожалуйста каким образом можно наиболее адекватно шифровать ссылки для скачивания. То есть пользователь вошел -> для него генерируется ссылка, допустим на zip архив, ну и удаляется после скачки. Ни когда таким не занимался, стало интересно.
Ответы
Ответ 1
Можно пользоваться средствами веб сервера: модуль SecureLink для nginx (вовсю использую); и, кажется, mod-auth-token для Apache. Upd. Можно написать и свою реализацию на том же php, но есть очевидный минус: перформанс. Чтобы не показывать истинный адрес файла, придётся пропускать его контент сквозь работающий php скрипт в течение всего времени скачивания. Т.е. в памяти будет висеть по тяжеленному процессу php на каждую сессию скачивания. А веб сервер делает то же самое, легко и изящно. А, ещё можно создавать временную копию ценного файла, или, лучше, линк на него, со странным именем-абракадаброй, и стирать через опр. время.Ответ 2
Вот тут человек приводит свой готовый класс для таких целей: Временная ссылка для скачивания файла.Ответ 3
С помощью php придумываем ссылку и с помощью mod_rewrite подсовываем файл. Например такой .htaccess где index.php обрабатывает все запросы: Options +SymLinksIfOwnerMatch RewriteEngine On RewriteBase / RewriteRule .* index.php [L]Ответ 4
Я решил так задачу. Зделал файл скачивания назовем его download.php При заходе участника (За регестрированного пользователя) на сайт даем ему случайно сгенерированный ключ, который активен пока пользователь на сайте ?key=KJSJH#&EGJHJ к нему прикручиваем имя файла и директорию пользователя в которой находится файл. Отдаем все это через Header() application/octet-stream Ключ можно проверять через сессию например $_SESSION['confirm_download_key']; незнаю насколько эффективно, но пока работает.
Комментариев нет:
Отправить комментарий