Hotlink Koruması Nedir? .htaccess ile Görsel Hırsızlığını Engelleme

Hotlink (görsel hırsızlığı), başka bir sitenin doğrudan sizin sunucunuzdaki görsele referans verip kendi sayfasında o görseli gösterirken sizin bant genişliğinizi kullanmasıdır. Bu yazıda hotlink'in ne olduğunu, etkilerini, .htaccess ile nasıl engelleneceğini adım adım ve uygulamaya yönelik örneklerle açıklıyorum.

Hotlink neden önemlidir?

  • Bant genişliği tüketimi: Görselleriniz başka sitelerde kullanıldığında sunucunuzdan çıkan veri miktarı artar; bu da maliyetleri yükseltebilir veya performansı düşürebilir.
  • Marka ve telif hakları: İçerikleriniz izinsiz kullanıldığında marka bütünlüğü ve telif hakları zarar görebilir.
  • İçerik kontrolü: Görselin hangi bağlamda göründüğünü kontrol edemezsiniz; bu da marka imajı açısından risk oluşturur.

.htaccess ile temel yaklaşım

Apache tabanlı sunucularda en yaygın yöntem .htaccess içinde mod_rewrite kullanarak gelen isteklerdeki HTTP_REFERER başlığını kontrol etmektir. Aşağıda, tipik bir temel kural örneği var. Bu kurallar kök dizine (.htaccess) yerleştirilir veya sadece görüntülerin bulunduğu dizine konulur.

Örnek: Temel hotlink engelleme

# Hotlink koruma - temel örnek
RewriteEngine On
# Referer boş değilse ve referer bizim domain'imiz değilse engelle
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?ornekdomain\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|svg)$ - [F,NC,L]

Açıklama:

  • RewriteEngine On: mod_rewrite'i aktif eder.
  • RewriteCond %{HTTP_REFERER} !^$: Boş referer'ları izin verir. Bu satırı kaldırırsanız boş referer'lar da engellenir; bazı tarayıcılar veya güvenlik ayarları referer göndermeyebilir, bu yüzden dikkatli olmak gerekir.
  • RewriteCond %{HTTP_REFERER} !^https?://(www\.)?ornekdomain\.com [NC]: Kendi domain'inizi (örnekte ornekdomain.com) izinli listeye alır. Bu satırı kendi domain adınızla değiştirin. Gerekiyorsa ek satırlar ile alt domainler ve partner domainleri ekleyebilirsiniz.
  • RewriteRule \.(jpg|jpeg|png|gif|svg)$ - [F,NC,L]: Bu dosya uzantıları için isteği engeller (HTTP 403 Forbidden).

İzin verilen domainler ve birden fazla etki alanı ekleme

Eğer birkaç domain veya CDN izni vermek istiyorsanız, ek RewriteCond satırları ekleyin:

RewriteCond %{HTTP_REFERER} !^https?://(www\.)?ornekdomain\.com [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?altalan\.com [NC]
RewriteCond %{HTTP_REFERER} !^https?://cdn\.(ornekdomain|altalan)\.com [NC]

Alternatif: Yerine yönlendirme veya yer tutucu gösterme

Engelleme yerine hotlink yapan isteklerde kendi sunucunuzdaki bir yer tutucu görseli göstermek isteyebilirsiniz. Bu çözüm kullanıcıya 403 yerine başka bir görsel sunar:

# Hotlink için yer tutucu gösterme
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?ornekdomain\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|svg)$ /images/placeholder.jpg [R,L]

Bu yaklaşım, kullanıcı deneyimini daha yumuşatır ancak yine de bant genişliğinizden veri çeker (placeholder görseli yüklendiği için).

Uygulama sırasında dikkat edilmesi gerekenler

  • mod_rewrite aktif mi? Sunucunuzda mod_rewrite etkin değilse kurallar çalışmaz; barındırma panelinizde veya sunucu yapılandırmasında kontrol edin.
  • Referer güvenilir midir? HTTP_REFERER başlığı her zaman gönderilmez veya manipüle edilebilir; güvenlik katmanı olarak tek başına yeterli olmayabilir.
  • Boş referer politikası: İlk örnekte boş referer'lara izin verdik; bu sayede bazı tarayıcı/uygulamalar engellenmez. Boş referer'ları da engellemek isterseniz ilgili satırı kaldırın ama test edin.
  • Önbellekleme: CDN veya tarayıcı önbelleğini dikkate alın. Kuralları değiştirdikten sonra eski içerik önbellekte kalabilir; temizleme/test gerektirir.
  • Hataların izlenmesi: Sunucu hata/log dosyalarını izleyin; kural hataları veya istenmeyen bloklamalar buradan görülebilir.

Alternatif ve tamamlayıcı yaklaşımlar

  • Barındırma paneli hotlink koruması: Birçok hosting kontrol paneli (ör. cPanel) görsel hotlink korumasını arayüzden aktif etme imkânı sunar; bu, .htaccess yazmaktan daha basit olabilir.
  • CDN veya WAF kuralları: CDN'ler veya Web Application Firewall'lar (WAF) gelişmiş hotlink kontrolleri ve imzalı URL desteği sunar; özellikle yüksek trafikli sitelerde tercih edilir.
  • İmzalı/süreli URL'ler: Önemli içerikler için imzalı veya süreli erişim anahtarları kullanmak daha güvenli bir yaklaşımdır.

Adım adım uygulama rehberi

  1. Önce test ortamında .htaccess kuralını deneyin (canlı sitede doğrudan değişiklik yapmayın).
  2. Kendi domain adınızı örnekteki yerle değiştirin ve gerekiyorsa ek domainleri izin listesine ekleyin.
  3. Tarayıcı önbelleğini temizleyin veya gizli pencere kullanarak testi tekrarlayın.
  4. Farklı senaryoları test edin: boş referer, farklı tarayıcılar, mobil uygulamalar, partner siteler.
  5. Logları izleyin; hatalı engellemeleri düzelterek kuralları optimize edin.

Sonuç

Hotlink koruması, bant genişliği ve marka kontrolü açısından önemli ve nispeten düşük maliyetli bir önlemdir. .htaccess tabanlı yöntemler hızlı uygulanabilir ve çoğu küçük/orta ölçekli site için yeterlidir. Ancak daha yüksek trafikli sitelerde veya hassas içeriklerde CDN tabanlı koruma, imzalı URL'ler veya WAF gibi çözümler daha sürdürülebilir ve güvenlidir. Uygulamaya başlamadan önce test edin, izin verilen domainleri doğru tanımlayın ve kullanıcı deneyimini olumsuz etkilememeye dikkat edin — bu, en verimli ve sürdürülebilir yaklaşımdır.