Hotlinking — lub bezpośrednie linkowanie — ma miejsce, gdy witryna zewnętrzna wyświetla Twoje obrazy, bezpośrednio linkując ich adresy URL z Twojego serwera. W rezultacie: ich witryna zużywa Twoją przepustowość, wyczerpuje limit transferu i obciąża Twój serwer, bez żadnych korzyści dla Ciebie. W 2026 roku hotlinking pozostaje jednym z najczęstszych nadużyć w internecie. Oto wszystkie metody skutecznej ochrony.
Zrozumienie hotlinkowania i jego konsekwencji
Gdy witryna osadza obraz poprzez tag <img src="https://twajadomnena.com/zdjecie.jpg"> na własnych stronach, Twój serwer odpowiada na każde załadowanie ich strony. W praktyce:
- Twoja przepustowość jest zużywana do zasilania witryny zewnętrznej
- Miesięczny limit transferu wyczerpuje się szybciej
- Twój serwer ponosi dodatkowe obciążenie przy każdej wizycie na naruszającej witrynie
- Płacisz za hosting obrazów, które służą do wzbogacania treści innych witryn
W skrajnych przypadkach bardzo odwiedzana witryna hotlinkująca Twoje obrazy może spowodować przeciążenie serwera lub przekroczenie limitu, które uniemożliwi dostęp do Twojej własnej witryny.
Metoda 1: blokowanie hotlinkowania przez .htaccess (Apache)
Jest to najklasyczniejsza i najskuteczniejsza metoda na serwerach Apache. Plik .htaccess umożliwia sprawdzanie nagłówka HTTP Referer każdego żądania — jeśli żądanie nie pochodzi z Twojej domeny, jest blokowane lub przekierowywane.
Dodaj te linie do pliku .htaccess w katalogu głównym witryny:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www.)?twajadomnena.com [NC]
RewriteRule .(jpg|jpeg|png|gif|webp|svg|avif)$ - [F,L]Ta reguła blokuje każde żądanie obrazu, którego Referer nie jest Twoją domeną. Możesz zastąpić [F,L] (błąd 403) przekierowaniem do obrazu ostrzegawczego:
RewriteRule .(jpg|jpeg|png|gif|webp|svg|avif)$ https://twajadomnena.com/no-hotlink.png [R,L]Warto wiedzieć: warunek RewriteCond %{HTTP_REFERER} !^$ zezwala na żądania bez Referera (dostęp bezpośredni, zakładki, narzędzia deweloperskie). Jeśli chcesz je również zablokować, usuń tę linię — ale pamiętaj, że może to uniemożliwić wyświetlanie obrazów w niektórych uzasadnionych kontekstach, takich jak wiadomości HTML czy agregatory RSS.
Metoda 2: blokowanie hotlinkowania przez Nginx
Na serwerze Nginx ochronę konfiguruje się w bloku server lub location pliku konfiguracyjnego:
location ~* .(jpg|jpeg|png|gif|webp|svg|avif)$ {
valid_referers none blocked twajadomnena.com *.twajadomnena.com;
if ($invalid_referer) {
return 403;
}
}Dyrektywa valid_referers none blocked zezwala na dostęp bezpośredni (none) i żądania bez Referera (blocked). Tylko wymienione domeny mogą osadzać Twoje obrazy.
Metoda 3: korzystanie z polityki Referrer-Policy
Dyrektywa HTTP Referrer-Policy kontroluje, jakie informacje Referera są wysyłane z żądaniami z Twojej witryny. Ustawiając restrykcyjną politykę, ograniczasz informacje dostępne dla witryn zewnętrznych — ale ta metoda nie chroni aktywnie Twoich obrazów, tylko ogranicza propagację URL Twojej witryny.
Dla podstawowej ochrony dodaj do .htaccess:
Header set Referrer-Policy "same-origin"Metoda 4: ochrona przez CDN
Jeśli hostujesz obrazy przez CDN (Cloudflare, AWS CloudFront, Fastly…), ochrona przed hotlinkowaniem jest zazwyczaj dostępna natywnie w panelu administracyjnym:
- Cloudflare: włącz regułę "Hotlink Protection" na karcie Scrape Shield w panelu. Automatycznie blokuje żądania obrazów z nieautoryzowanych domen
- AWS CloudFront: użyj funkcji Lambda@Edge do sprawdzania nagłówka Referer i blokowania nieautoryzowanych żądań
- Bunny CDN: ochrona hotlinkowania jest dostępna bezpośrednio w ustawieniach strefy przechowywania
Zaleta CDN jest podwójna: ochrona jest zarządzana na poziomie sieci dystrybucji, jeszcze przed dotarciem do serwera źródłowego, i stosuje się do wszystkich zasobów bez modyfikowania konfiguracji serwera.
Metoda 5: regularne zmienianie nazw i przenoszenie obrazów
Mniej techniczne, ale uzupełniające podejście polega na okresowej zmianie adresów URL obrazów. Każdy zewnętrzny bezpośredni link staje się natychmiast nieważny. Podejście to można zautomatyzować za pomocą skryptu zmiany nazw lub zarządzania zasobami z hashem treści (jak Webpack lub Vite robią to natywnie dla plików CSS i JS).
Metoda 6: korzystanie z tymczasowych tokenów dostępu
W przypadku wrażliwych lub intensywnie odwiedzanych obrazów generowanie podpisanych URL z datą wygaśnięcia jest najsilniejszą ochroną. Zasada: każdy URL obrazu zawiera kryptograficzny token ważny przez ograniczony czas (1h, 24h…). Po upływie tego czasu URL jest już nieważny.
- AWS S3: generowanie Presigned URL przez AWS SDK
- Cloudflare R2: podpisane URL z konfigurowalną datą wygaśnięcia
- Bunny CDN: podpisywanie URL kluczem tajnym i znacznikiem czasu
| Metoda | Trudność | Skuteczność | Kompatybilność z CDN |
|---|---|---|---|
| .htaccess (Apache) | Łatwa | Dobra | Częściowa |
| Konfiguracja Nginx | Średnia | Dobra | Częściowa |
| Natywny CDN (Cloudflare…) | Bardzo łatwa | Bardzo dobra | Tak (natywna) |
| Okresowe zmienianie nazw | Zmienna | Średnia | Tak |
| Podpisane URL / tokeny | Zaawansowana | Maksymalna | Tak |
Warto wiedzieć: żadna ochrona przed hotlinkowaniem nie jest absolutnie niezawodna. Zdeterminowana witryna zawsze może pobrać Twoje obrazy i ponownie je hostować na własnych serwerach — w takim przypadku jest to kwestia praw autorskich, a nie hotlinkowania. Ochrona przez .htaccess lub CDN obejmuje zdecydowaną większość nadużyć i wystarczy do codziennej ochrony przepustowości.