Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   PHP (http://www.flasher.ru/forum/forumdisplay.php?f=20)
-   -   Как не дать никому поставить линк на файл, лежащий на моем сайте? (http://www.flasher.ru/forum/showthread.php?t=32483)

Yurik 02.06.2002 06:23

Как не дать никому поставить линк на файл, лежащий на моем сайте?
 
Т.е. мне нужно чтобы можно было загрузить файл только зайдя на страницу "доунлоад.хтм" и кликнув там на линк "доунлоад".
Чтобы пользователь не мог использовать прямой линк на файл (например зип-архив).

Wave 02.06.2002 14:17

держи файлы в базе, и отдавая их пользователю проверяй referrer... вообще - проверяй все, что только сможешь придумать :)

Crazy 02.06.2002 16:25

Referer защитит только от чайников.

Wave 02.06.2002 18:42

умный, да?

тогда поясни ему как он может использовать сессии для защиты своих ссылок :rolleyes:

Crazy 02.06.2002 19:38

Сессии он тоже не может использовать. Могу даже объяснить -- почему. Я для этого достаточно умный. :)

Yurik 02.06.2002 20:09

А вот что-то типа этого пойдет?


Код:

$files=array( file1.zip', 'file2.mp3');
$filenames=array( 'file1.mp3', 'file2.mp3');
$url= "http://www.mysite.net/download/files_folder/";


$referer=ereg_replace( "\?.", "",$HTTP_REFERER);
$thisfile= "http://$HTTP_HOST$PHP_SELF";

if ($referer!=$thisfile){
                for ($i=0;$i<count($files);$i++)
        echo  "<P><A HREF=\"$PHP_SELF?$i\">",$filenames[$i]";
}
else {
        $i=$QUERY_STRING;
        $total=$url . $files[$i];
        Header ( "Content-Type: application/octet-stream");
        Header ( "Content-Length: ".filesize($total));
        Header( "Content-Disposition: attachment; filename=$filenames[$i]");
        readfile($total);
}


Crazy 02.06.2002 21:50

Защита от чайника.

Профи запросто подставит тебе любой REFERER, какой сочтет нужным.

Wave 02.06.2002 23:31

а что если при открытии download.php?filename=filename.zip генерить что то типа filename.zip|suparandomid и хранить его куда нить, ссылку же делать в виде fetchfile.php?id=randomid, и при скачивании запись типа *|* мы удалим. таким образом не посетив download.php человек хрен стянет filename.zip. поставив же ссылку, он тоже обломается, потому что рандомид мы сикспирим через полчаса к примеру.
достаточно помоему надежно.... аль нет?

Crazy 03.06.2002 01:56

Общий принцип: нельзя доверять данным, которые передал пользователь.

Соответственно универсального механизма нет в принципе.

Можно подобрать пригодный механизм для конкретного случая -- и перечисленные методы каждый по-своему работоспособны. Но автор треда не указал настоящую цель, которую он хочет достичь. Соответственно, нет смысла угадывать.

Yurik 03.06.2002 05:15

Crazy
Подскажи тогда что-либо пожалуйста.

Wave
Как мне кажется достаточно надежно... но хз. В принципе мне особенно и не нужно от сильно искушенных людей защищаться, просто чтобы кто попало ссылку на файлы не ставил...


Часовой пояс GMT +4, время: 23:25.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.