Plik .htaccess w walce przeciw z hotlinking
Hotlink to technika linkowania plików (np.: obrazków, dźwięków czy programów) z obcych serwisów i umieszczanie ich na swoich stronach www. Jest to nieetyczna technika, powodująca podkradanie cudzego transferu, a jak wszyscy wiedzą, to właśnie transfer jest najdroższy w usługach hostingowych. Co zrobić jeśli ktoś kradnie nasz transfer? Czy jest jakieś zabezpieczenie? Z pomocą przychodzi plik .htaccess.
Czym dokładnie jest hotlink (znane też pod nazwą inline linking, hotlinking, leeching lub „po polsku” hotlinkowanie)? Na podstawie Wikipedii:
Hotlink to technika budowania serwisu internetowego w oparciu o cudze zasoby. Mowa tutaj o zajmujących przepustowość i miejsce na serwerze plikach medialnych, plikach archiwalnych lub programach komputerowych. Technika ta należy do nieetycznych i jest zwalczana przez autorów adresów źródłowych. Jest techniką pasożytniczą wykorzystującą obce zasoby w celu popularyzacji własnej marki.
Zasada działania
Przykładowo, strona xxx.pl oferuje dział z programami do obróbki muzyki do ściągnięcia; Alternatywna strona yyy.pl chcąca posiadać podobny dział, umieszcza w swoim dziale linki do plików na serwerze strony xxx.pl. W tym wypadku internauta klikając na łącze na stronie firmy yyy.pl, w rzeczywistości ściąga plik ze strony firmy xxx.pl.
Częstym przypadkiem jest hotlinkowanie obrazków, dlatego też na przykładzie plików typu JPG, GIF i PNG zaprezentuje jak można ustrzec się przed hotlinkiem.
W pliku .htaccess wpisujemy:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?xradar\.net/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.png [L]
Zakładamy, że nasza strona ma adres www.xradar.net :-) Druga linia mówi jeśli referrer jest różny od www.xradar.net. [NC] oznacza not case sensitive – nie rozróżniaj wielkości znaków. Trzecia linia oznacza jeśli referrer nie jest pusty. Ostatnia linia mówi: przekieruj wszystkie pliki JPG, JPEG, GIF, BMP i PNG do pliku /image/nohotlink.png. W pliku nothotlink.png można umieścić jakiś znaczek, że ktoś podkrada nasz transfer :-) [L] oznacza, że to polecenie jest już ostatnie i informuje serwer żeby nie wykonywał kolejnych.
Oczywiście zamiast podmiany obrazka na specjalny dla hotlinkujących, można zwrócić komunikat 403 Forbidden (brak dostępu). Wystarczy wtedy zamienić ostatnią linijkę kodu powyżej na następującą:
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]
O tym jak zrobić własną stronę błędu 403 Forbidden pisałem w tekscie Ban i 403 za pomocą htaccess.
Istnieje także możliwość zablokowania hotlinka dla konkretnej domeny. Przykładowo:
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?strona1\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?strona2\.com/ [NC]
W tym przypadku zablokujemy przed hotlinikowaniem domeny strona1.com i strona2.com. [OR] oznacza lub.
Podziekował. :>
zadelicjowane (:
Dobra, ktoś wyłącza przekazywanie referera w przeglądarce i co? Pozbawiasz niektórych gości możliwości obejrzenia obrazka…
Skąd taki pomysł? Osobiście nie sprawdzałem, ale nie wydaje mi się, żeby tak to zadziałało.
@eRiZ – jesteś w błędzie. Po to właśnie jest ta 3 linijka – „jeżeli referer nie jest jest pusty”. A jak jest, to pliki załadują się normalnie. Sam korzystam z tego rozwiązania już od kilku miesięcy i problemów żadnych nie ma.
Sam kiedyś w głowie stworzyłem coś, co na moje oko byłoby skuteczniejszym rozwiązaniem (bo przy tym, co kolega w notce zaproponował, to osoby z wyłączonym refererem mogą bez problemu ściągać pliki z hotlinków). Temat poruszałem na forum, ale nikt nie pomógł go dopracować: http://forum.webhelp.pl/viewtopic.php?t=136531
Pozdrawiam serdecznie
A próbowałeś po prostu zrobić tak:
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?xradar\.net/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.png [L]
?
W tym wypadku powinno to zadziałać jako: „Jeśli referer jest inny niż moja domena, to nie pokazuj moich obrazków.” Jednym słowem, ograniczy to dostęp do obrazków tylko wywoływanych z poziomu Twojej domeny.
@Pawle – właśnie nie do końca. Miałem tak na początku. Ale wtedy, jeżeli ktoś ma wyłączone przekazywanie referera, to nawet jak się odwołuje z mojej strony, jest traktowany jako intruz.
Hmm… No to prawda. A ilu jest takich którzy ukrywają ref? Myślę, że nie warto.
Pawel,
Norton Internet Security blokuje standardowo referer.
Swego czasu na pewnej stronie wielojezycznej sprawdzalem cos z pomoca referera(nie blokada hotlink), i w przyblizeniu ok. 3%-4% uzyszkodnikow nie przechodzilo testu…
moje rozwiazanie (zadziwiajaco podobne do rozwiazania Lukasza, ale dzialajace):
http://www.fabrykaspamu.pl/poprawne-zabezpieczenie-przed-hotlinkowaniem/
dziekowac.
Dzięki, wreszcie mi nie będą podkradać obrazków!
witam
czy to naprawdę działa? bo u mnie niestety nie, co jest bardzo dziwne
Jak dla mnie hotlinkowanie pomaga w pozycjonowaniu :)
Nie działa :(
niestety, nie działa, co więcej – nikt nic w tym temacie nie wymyślił
Pysznie to dziala:)
Ale niestety zabija tez wyswietlanie obrazkow strony w tlumaczu google, logiczne;)
Jak zapisac dwie domeny „uprawnione”???