Скрытие или запутывание URL-пути к файлам - PullRequest
3 голосов
/ 29 января 2011

Я разрешаю пользователям загружать файлы .jpg, .pdf .doc .xls на мой веб-сервер под своей учетной записью, затем они могут позже щелкнуть имя файла, чтобы просмотреть документ в браузере, или в случае.doc .xls, они скачивают его через браузер по умолчанию.

Я хочу скрыть / скрыть путь URL, чтобы они не знали точный путь к файлу, надеясь сохранить файлызащищенный от других учетных записей / пользователей.

Я использую php, apache

Вот пример и путь:

http://dev.site.com/administrator/account_files/1/documents/property_docs/1_68_1295980609myfile.pdf

Как я могу скрыть URL-адрес для чего-то более похожего:

http://dev.site.com/1_68_1295980609myfile.pdf

главная цель - удалить ссылку на "administrator / account_files / ...."

Есть ли что-то с mod_rewrite в apache, которое я мог бы сделать?Я прочитал несколько других постов, где люди использовали php readfile () и использовали другую страницу, но мне интересно, возникнут ли у меня некоторые проблемы с производительностью при таком способе.

Спасибо за ваш совет.

Ответы [ 3 ]

0 голосов
/ 29 января 2011

Это может стоить вам некоторой производительности, но, вероятно, это не создаст никаких реальных проблем при использовании readfile.Это не сильно накладные расходы.В любом случае, файл должен быть прочитан, так что запуск PHP-скрипта немного сложнее.

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

0 голосов
/ 29 января 2011

Вы должны заставить PHP загрузить этот файл:

<?php
$file = 'path/to/your/file.zip';
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip"); // change to a specific mime type
header("Content-Transfer-Encoding: binary");
0 голосов
/ 29 января 2011

Вам нужно создать таблицу, чтобы прочитать и сохранить пути.Например, посмотрите, как работают такие сайты, как http://bit.ly;по сути, они присваивают уникальную строку URL, и это то, что вы хотите сделать.

Существует ряд сценариев PHP, которые могут сократить URL-адреса для вас и таким образом замаскировать пути, просто выполните поиск в Google .

...