используя joomla (или даже просто PHP), как бы вы запутали имя файла PDF? - PullRequest
1 голос
/ 14 июля 2011

У меня есть файл, назовите его secret.pdf, который я предлагаю для скачивания.Тем не менее, я бы хотел, чтобы у него не было URL, который можно скопировать / вставить или напечатать, например, www.website.com/pdf/secret.pdf (без поиска файлов!).

Например, пользователь A нажимает на ссылку и получает kgsjgldsg.pdf.Пользователь B нажимает на ту же ссылку, но получает asadsfsefaw.pdf.Суть в том, что случайное имя файла используется для ссылки на тот же файл, secret.pdf.

Я нашел Google php обфускатор файла и обфускатор имени файла joomla, и им не повезло.Любые идеи или указатель в правильном направлении будет высоко ценится.

Ответы [ 2 ]

3 голосов
/ 14 июля 2011

Альтернативой является сохранение pdf-файла на 1 уровень выше из вашей папки public_html в вашей учетной записи хостинга.Затем вы можете использовать полный путь для доставки файла пользователю в качестве загрузки.Таким образом, никто не сможет получить доступ к файлу, так как он недоступен на вашем сайте.Только код на вашем сайте знает, где находится файл.Я делаю это для ряда компонентов, см. Код ниже, относящийся к Joomla:

    $file = '/home/domain/files/secret.pdf'
    $filesize = filesize(file );
    JResponse::setHeader('Content-Type', 'application/pdf');
    JResponse::setHeader('Content-Transfer-Encoding', 'Binary');
    JResponse::setHeader('Content-Disposition', 'attachment; filename="'.$file.'"');
    JResponse::setHeader('Content-Length', $filesize);
    echo JFile::read($file);
3 голосов
/ 14 июля 2011

Вы можете добавить переменную GET, основанную на времени, которая действительна в течение 1 минуты (должно быть достаточно).

Таким образом, ваш запрос будет /pdf/getPDF.php?key=xxxxxxxxx

Создайте key соленый хеш на основе текущего времени на вашем сервере, например, самое близкое число, делимое на 5 (когда это 17:17, вы будете использовать 17:15 и т. Д.).

Затем генерирует «текущий» хеш для вашего getPDF.php файла, а если он тот же, то транслируйте ваш pdf.

Это НЕ помешает людям использовать ссылку, но ссылка будет действительна только в течение 5 минут.

Приложение: Вы должны убедиться, что pdf недоступен извне, а доступен для чтения только для вашего php-файла для потоковой передачи pdf (например, вне вашего /var/www или эквивалентного каталога)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...