Как скрыть реальное местоположение файла?

  • Автор темы Автор темы kvf77
  • Дата начала Дата начала

kvf77

Red Devil
Как скрыть реальное местоположение файла?

Есть коммерческий сайт (продаются документы с нормативами по строительству), необходимо скрыть от заплатившего пользователя реальное местоположение файла, чтобы он не мог потом по прямой ссылке скачивать его много раз и не мог нигде оставлять прямую ссылку. Как это реализовать? скажем, чтобы ссылка выглядела www.my-site.ru/dfgdfgdfgdf/doc.doc
Иначе при наведении на ссылку видно откуда файл качается. Как это реализовать. Авторизация идет через сессии.
 
второй вариант - скрипт даунлоада, который проверяет в сессии логин/пароль и соответственно дает скачать только один раз
кстати, только что ( http://phpclub.net/talk/showthread.php?s=&postid=266056 ) интересовался в другом топике - а зачем запрещать скачивать один раз уже скачанный файл? если инфа в нем меняется то правильней будет менять его имя
а с запретом тебе еще придется обдумывать как бы твоя защита не помешала бы ему скачать файл вообще (если файл большой а канал у клиента плохой и скачивает он его не весь сразу а с докачкой)
 
К сожалению, эти документы востребованы и не все они ЧАСТО меняются. И мы сталкиваемся постоянно с тем, что скачавший помещает в сети прямые линки на файл и их может качать каждый желающий, а это не приемлемо. Мод реврите хостером не поддерживается к сожалению.

Автор оригинала: HEm
второй вариант - скрипт даунлоада, который проверяет в сессии логин/пароль и соответственно дает скачать только один раз

Вот тут подробнее. Ведь скажем тот же FlashGet покажет реальное местоположение файла, как это скрыть, то есть чтобы файл на диске не перемещался, но ссылка на него каждый раз была разная.

кстати, только что ( http://phpclub.net/talk/showthread.php?s=&postid=266056 ) интересовался в другом топике - а зачем запрещать скачивать один раз уже скачанный файл? если инфа в нем меняется то правильней будет менять его имя
а с запретом тебе еще придется обдумывать как бы твоя защита не помешала бы ему скачать файл вообще (если файл большой а канал у клиента плохой и скачивает он его не весь сразу а с докачкой)
 
Что же у тебя за авторизация такая, которую можно обойти прямой ссылкой??
 
PHP:
<?
if ($authorized = true) {
	header("Content-type: image/gif");
	readfile("pics/golaya_devushka.png");
} else {
	header("Content-type: image/gif");
	readfile("pics/go_away.png");
}
?>
думаю смысл понятен... пишешь это в файл download.php (к примеру) и в зависимости от каких-то условий либо отдаешь нужный файл клиенту, либо нет.
 
можно еще таким способом
<a class=brick href="
download.php" target = '_blank'>


содержание download.php
<?$realfilename="../www/data/name.zip";
$filename_for_client= "name.zip"
header("Cache-control: private");
header("Content-type: application/force-download");
header("Content-Length: ".filesize($realfilename));
header("Content-Disposition: filename=".$filename_for_client);
$r= readfile($realfilename);
?>
 
Stepan96 - простите, каким образом тут спасает mod_rewrite?
А тема обсуждалась очень много раз, так что поиск поможет однозначно.
 
2 Admiral и др. о ссылках с других сайтов:

Код:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^[url]http://[/url](www\.)?microsoft.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ [url]http://www.microsoft.com/billy.gif[/url] [R,L]

Другое решение повторного скача:
Для использования файла необходима активация (по телефону итд). Надо подумать, как ее реализовать для *.doc файлов, например :).

А вообще-то, нет таких способов защиты, которые нельзя было бы обойти. В принципе. Поэтому часто имеет смысл заняться не формой защищаемой информации, а ее "содержанием".
 
А вообще-то, нет таких способов защиты, которые нельзя было бы обойти. В принципе. Поэтому часто имеет смысл заняться не формой защищаемой информации, а ее "содержанием".

У меня нет задачи защитить файлы, у меня задача не дать их скачивать по старой ссылке и не дать возможность выкладывать в инете прямые ссылки на файл.
 
Сверху