PHP: как скрыть URL файла от сниффера

archive view archive save

php-logo Для чего нам нужно скрыть URL скачиваемого файла от сниффера? Ну, например есть коммерческий софт, доступ к файлам которого должны получать только заказчики/покупатели его оплатившие.

Заказчик/покупатель оплачивает товар и получает ссылку с уникальным ИД для загрузки файла. Далее, после 2-3 загрузок ссылка должна "умирать", а истинный URL должен остаться неизвестен даже при использовании снифера. В противном случае файл будут "дёргать" все кому не лень.

Примерно вот в таких ситуациях нам и потребуется скрыть URL файла не только от самого клиента, но и от разного рода снифферов и анализаторов Интернет-трафика.

В случае с РНР, скрыть URL загрузки файла, нам помогут такие функции как header(), basename() и readfile():

<?php 
 
// Полный путь к файлу
// Директория /download/ от доступа извне защищена файлом .htaccess
// Фактически директорию /download/ можно вынести за пределы /public_html/
$filePath = '/var/www/example.com/public_html/download/test.zip';
 
// Не кэшировать данные
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false);
// MIME type: https://www.iana.org/assignments/media-types/media-types.xhtml
header('Content-Type: application/zip');
// Предлагаем сохранить
header('Content-Disposition: attachment; filename="' . basename($filePath)
    . '";');
// Режим передачи данных
header('Content-Transfer-Encoding: binary');
// Длина (размер) содержимого
header('Content-Length: ' . filesize($filePath));
// Время выполнения скрипта (0 = неограниченно)
set_time_limit(120);
// Читаем файл и пишем его в буфер вывода
readfile("$filePath");
exit;

Вот и все премудрости. Миссия "Узнать реальный URL скачиваемого файла" невыполнима.

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

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


Об авторе
Иван Шаман
Меня нет ни в Инстаграмме ни в Фейсбуке, я просто хожу по улицам и рассказываю первым встречным: сколько зарабатываю; с кем дружу; где живу и чем дышу. У меня даже появилось несколько подписчиков: ПСИХоЛОХ и участковый полицай!
Ещё статьи автора

Нет комментариев

Вы можете стать первым, кто добавит комментарий к этой записи.

Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Комментарии в блоге
Новое на форуме