На сайте в папке /books/ и подпапках лежат архивы .rar и .zip
С других сайтов делают прямые ссылки на них и качают напрямую.Как сделать так, чтобы только с сайта качалось по прямым ссылкам, а при закачке по внешним ссылкам запускался скрипт?
>На сайте в папке /books/ и подпапках лежат архивы .rar и .zip
>
>С других сайтов делают прямые ссылки на них и качают напрямую.
>
>Как сделать так, чтобы только с сайта качалось по прямым ссылкам, а
>при закачке по внешним ссылкам запускался скрипт?Такой вариант я использовал:
Скрипт который просто выдает файл в вывод, ставится в корневую директорию и в нем вбивается путь к папке.
Теперь если нужен файл просто передаем скрипту имя или путь уже внутри папки /books/
Если кто-то захочет извне добратся до них то он во-первых не будет знать имя папки и во-вторых в апаче можно запретить извне получать доступ.
Остается только через скрипт, но скрипт может проверить поле реферер и если не свой сайт то выдать ошибку (либо тот скрипт что Вам нужен). Злоумышленку останется только подделывать поле реферер, а вот от этого как засчитится я не знаю и подделать это сможет любой программист. Зато засчита будет работать от простого пользователя.
Лови сам скрипт:
<?
$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
Спасибо. Я сделал проще, как описано тут http://htaccess.net.ru/doc/mod_rewrite/guard_rar_jpg.phpТолько изменил действия при скачке с других сайтов. Теперь, если качают по ссылкам с других сайтов - то перебрасывает на страницу, где нужно выбрать откуда качать.
В результате человек, качающий архив, попадает на страницу моего сайта, а не просто скачивает архив.
А что у тебя произойдет, если обратимся так:
script.php?file=../../../../../../../../etc/passwd