Gość Łukasz Tkacz Zgłoś post Napisano Luty 24, 2008 Witam, mam na serwerze dosyć pokaźnych rozmiarów download, porzera on ok. 80% transferu. Ostatnio w cpanelu zauważyłem, że sporo plików jest ściaganych bez wejścia na stronę wię chcę ukrucić ten "proceder" - nie mam zamiaru sponsorować komuś downloadu. Sprawa wygląda tak, mam wszytskie pliki w poszczególnych katalogach np: moja_domena/downloads/a1/plik1.rar Chcę aby wpisanie takiego adresu spowodowało wyświetlenie błędu z informacją o braku dostępu, na stornie korzystam ze skryptu extreme-fusion więc chciałbym aby akceptowane były tylko i wyłącznie żadania typu: moja_domena/downloads.php?cat_id=X&download_id=Y gdzie X i Y to oczywiście odpowiednie zmienne. Z pewnością da się coś takiego zrobić, tylko jak? Udostępnij ten post Link to postu Udostępnij na innych stronach
pleple 0 Zgłoś post Napisano Luty 24, 2008 Przez mod_rewrite. Korzystając z niego możesz rozwiązać swój problem nawet bardziej kompleksowo - pozwolić na sciąganie plików tylko i wyłącznie jeśli w nagłówku Referer znajduje się adres Twojej strony. W google szukaj czegoś o "prevent hotlinking". Udostępnij ten post Link to postu Udostępnij na innych stronach
BlueMan 69 Zgłoś post Napisano Luty 24, 2008 Ostatnio napisałem na własne potrzeby skrypt downloadu ze zliczaniem ściągnieć oparty na BD sql. http://download.blueforum.pl/ - znajdźcie docelową ścieżkę do plików Nie jest on dopracowany, bo mam problem z rozpoznawaniem typów plików - aby FLV działały w web playerach jak ktoś zna rozwiązanie tego problemu, to czekam na kontakt Udostępnij ten post Link to postu Udostępnij na innych stronach
Tomi 0 Zgłoś post Napisano Luty 24, 2008 Mona sprawdzać referujący adres i jeśli nie pokrywa sie z twoim to porostu przekierowywać na stronę główną twojego serwisu zamiast na plik. Wystarczy do pliku download dodać w odpowiednim miejscu coś takiego: <?php if (!strstr($_SERVER['HTTP_REFERER'], "twojadomena.pl")) { die('<h1>Nieuprawnione przekierowanie</h1>'); } ?> Kod pisany w pośpiechu może nie działać ale wiesz o co chodzi. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Łukasz Tkacz Zgłoś post Napisano Luty 24, 2008 Ale chodzi o to aby ktoś nie mógł wpisać BEZPOŚREDNIEGO adresu do pliku (tzn. mógł ale żeby wtedy wywaliło mu brak dostępu), zmiany w downloads.php nie są mi w ogóle potrzebne (no chyba żeby zlikwidować używanie programów takich jak FlashGET. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Łukasz Tkacz Zgłoś post Napisano Luty 24, 2008 Niewiedzieć czemu nie moge dytować posta więc, wrzuciłem do htaccess coś takiego: RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\\.)?jacenter.pl/.*$ [NC] RewriteRule \\.(rar|zip|7zip)$ - [F] ale nic to nie dało, dostęp bezprośredni nadal działa. Spróbowałem tak: RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\\.)?jacenter.pl/downloads.php.*$ [NC] RewriteRule \\.(rar|zip|7zip)$ - [F] Nadal to samo :| Udostępnij ten post Link to postu Udostępnij na innych stronach
pleple 0 Zgłoś post Napisano Luty 24, 2008 Masz dwa warunki: (Jeśli referer NIE jest pusty) I (jeśli referer się nie zgadza) TO odrzuć W przypadku kiedy referer jest pusty (odwołanie bezpośrednie), pierwszy warunek się nie zgadza więc regułka się nie wykonuje. Proponuje zmienić pierwszy warunek na: RewriteCond %{HTTP_REFERER} ^$ [OR] Dla poprawienia wydajności zmieniłbym w ogóle nieco strukturę tego przekierowania: RewriteEngine on RewriteCond %{REQUEST_FILENAME} \.rar$|\.zip$|\.7zip$ [NC] RewriteCond %{HTTP_REFERER} ^$ [OR] RewriteCond %{HTTP_REFERER} !^http://(www\\.)?jacenter.pl/downloads.php.*$ [NC] RewriteRule .* - [F] Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Łukasz Tkacz Zgłoś post Napisano Luty 24, 2008 Teraz jest zablokowane tak bezpośrednio jak i z poziomu downloads.php... Udostępnij ten post Link to postu Udostępnij na innych stronach
pleple 0 Zgłoś post Napisano Luty 24, 2008 Hmm.. nie wiem co znaczy "teraz" - czy po zmianie jednej linijki czy w ogóle po zmianie całej regułki. Tak w ogóle to ta linijka mi trochę podpada: RewriteCond %{HTTP_REFERER} !^http://(www\\.)?jacenter.pl/downloads.php.*$ [NC] Czemu właściwie jest tam podwójny backslash? Zresztą.. nie chce mi się już nawet nad tym zastanawiać, chory jestem.. Rzuć okiem do dokumentacji. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Łukasz Tkacz Zgłoś post Napisano Luty 24, 2008 Dałem: RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?jacenter.pl/downloads.php.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?forum.jacenter.pl/.*$ [NC] RewriteRule .*\.(rar|zip|7zip)$ - [F] i bezpośredni nie działa, przez downloads.php jest ok, przez te które były na forum też, ale jeżeli link do downloads.php jest na jakiejś innej stronie to nie działa :/ Chcę aby było zablokowane tylko bezpośrednie ściąganie... Udostępnij ten post Link to postu Udostępnij na innych stronach
pleple 0 Zgłoś post Napisano Luty 24, 2008 Przepraszam ale nie lubię dawać nic na tacy. Może po prostu postaraj się zrozumieć jak to działa... Udostępnij ten post Link to postu Udostępnij na innych stronach
Tomi 0 Zgłoś post Napisano Luty 24, 2008 RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteRule .*\.(rar|zip|7zip)$ - [F] A to działa jak chcesz? Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Łukasz Tkacz Zgłoś post Napisano Luty 25, 2008 Po wprowadzeniu czegoś takiego blokuje mi dostęp ze wszystkich możliwych stron (także downloads.php) @pleple - nie ma sprawy, tylko poproszę o manuala w języku polskim. Widziałem po angielsku ale tam już zupełnie nic nie rozumiem. Udostępnij ten post Link to postu Udostępnij na innych stronach