URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5612
[ Назад ]

Исходное сообщение
"Как определить внешние ссылки на закачку?"

Отправлено vlaimir , 12-Мрт-08 18:57 
На сайте в папке /books/ и подпапках лежат архивы .rar и .zip
С других сайтов делают прямые ссылки на них и качают напрямую.

Как сделать так, чтобы только с сайта качалось по прямым ссылкам, а при закачке по внешним ссылкам запускался скрипт?


Содержание

Сообщения в этом обсуждении
"Как определить внешние ссылки на закачку?"
Отправлено WiseFire , 12-Мрт-08 23:13 
>На сайте в папке /books/ и подпапках лежат архивы .rar и .zip
>
>С других сайтов делают прямые ссылки на них и качают напрямую.
>
>Как сделать так, чтобы только с сайта качалось по прямым ссылкам, а
>при закачке по внешним ссылкам запускался скрипт?

Такой вариант я использовал:
Скрипт который просто выдает файл в вывод, ставится в корневую директорию и в нем вбивается путь к папке.
Теперь если нужен файл просто передаем скрипту имя или путь уже внутри папки /books/
Если кто-то захочет извне добратся до них то он во-первых не будет знать имя папки и во-вторых в апаче можно запретить извне получать доступ.
Остается только через скрипт, но скрипт может проверить поле реферер и если не свой сайт то выдать ошибку (либо тот скрипт что Вам нужен). Злоумышленку останется только подделывать поле реферер, а вот от этого как засчитится я не знаю и подделать это сможет любой программист. Зато засчита будет работать от простого пользователя.


"Как определить внешние ссылки на закачку?"
Отправлено WiseFire , 12-Мрт-08 23:23 
Лови сам скрипт:
<?
$adress='books/'.$_GET['file'];
if(substr($_SERVER["HTTP_REFERER"],7,strlen($_SERVER["SERVER_NAME"]))==$_SERVER["SERVER_NAME"]){
  readfile($adress);
}else{
  echo 'ACCESS DENIED!!!';
}
?>
Обращаемся к ниму так если он script.php, а нужно получить /books/secret.rar:
script.php?file=secret.rar

"Как определить внешние ссылки на закачку?"
Отправлено vlaimir , 12-Мрт-08 23:31 
Спасибо. Я сделал проще, как описано тут http://htaccess.net.ru/doc/mod_rewrite/guard_rar_jpg.php

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

В результате человек, качающий архив, попадает на страницу моего сайта, а не просто скачивает архив.


"Как определить внешние ссылки на закачку?"
Отправлено angra , 15-Мрт-08 22:21 
А что у тебя произойдет, если обратимся так:
script.php?file=../../../../../../../../etc/passwd