Sitenize güzel ürün fotoğrafları, özenle hazırlanmış grafikler ya da özgün illüstrasyonlar yüklediğinizde, bunların yalnızca sizin sayfalarınızda görüneceğini düşünürsünüz. Oysa internette bir görsele doğrudan URL'siyle ulaşabilen herkes, o görseli kendi sitesinin HTML'ine gömerek sizin sunucunuzdan yayınlayabilir. Ziyaretçi başka bir siteyi açar, tarayıcısı arka planda sizin sunucunuza bağlanıp resmi indirir ve bunun bedelini bant genişliği olarak siz ödersiniz. Bu olguya "hotlinking" (sıcak bağlantı) denir ve çok sayıda küçük görselin bir araya geldiği bir sitede aylık trafik faturanızı sessizce şişiren en yaygın sebeplerden biridir.
Neyse ki cPanel, bu soruna karşı tek tıkla açılan hazır bir çözüm sunar: Hotlink Protection. Bu araç, dışarıdan gelen görsel isteklerini kaynak siteye (referer başlığına) bakarak filtreler ve yalnızca sizin izin verdiğiniz alan adlarından gelen çağrılara yanıt verir. Arka planda yaptığı şey aslında .htaccess dosyanıza birkaç yönlendirme kuralı yazmaktan ibarettir; ama bunu sizin için otomatikleştirir. Bu rehberde hotlinking'in tam olarak nasıl çalıştığını, cPanel Hotlink Protection'ı adım adım nasıl etkinleştireceğinizi, izin verilen alan adı listesini ve istisnaları nasıl yöneteceğinizi, aracın ürettiği .htaccess kurallarını ve Nginx sunucularda uygulanabilecek eşdeğer yaklaşımları çalışan örneklerle ele alacağız.
Hotlinking Nedir ve Nasıl Çalışır?#
Hotlinking, bir web sayfasının kendi sunucusunda barındırmadığı bir dosyayı (çoğunlukla görsel, bazen video, PDF veya font dosyası) doğrudan başka bir sitenin URL'sinden çağırmasıdır. Örneğin sizin sitenizde https://siteniz.com/gorsel/urun.jpg adresinde duran bir fotoğraf, başka birinin sitesinde şu şekilde gömülebilir:
<img src="https://siteniz.com/gorsel/urun.jpg" alt="Urun">
Bu satırı kendi blog yazısına ya da forum gönderisine koyan kişi, dosyayı indirip kendi sunucusuna yüklemek yerine doğrudan sizin adresinizi işaret eder. Sonuç şudur: o sitenin her ziyaretçisi, resmi görebilmek için sizin sunucunuza bir HTTP isteği gönderir. Görsel sizin diskinizden okunur, sizin bağlantınız üzerinden aktarılır ve sizin aylık trafik kotanızdan düşer. Görselin göründüğü site ise size ne bir ziyaretçi ne de bir teşekkür yollar.
Buradaki teknik anahtar, tarayıcıların gönderdiği Referer başlığıdır. Bir tarayıcı bir kaynağı yüklerken, isteğin hangi sayfadan kaynaklandığını bu başlıkta belirtir. Ziyaretçi doğrudan sizin sitenizdeyken görsel istediğinde Referer sizin alan adınızı gösterir; başka bir siteden gömülü olarak yüklendiğinde ise o sitenin adresini gösterir. Hotlink koruması tam olarak bu farkı kullanır: gelen isteğin Referer değeri sizin izin verdiğiniz listede yoksa, sunucu görseli teslim etmeyi reddeder.
Hotlinking Neden Bant Genişliğinizi Tüketir?#
Bant genişliği, sunucunuz ile ziyaretçiler arasında belirli bir sürede aktarılan toplam veri miktarıdır. Hosting paketleriniz genellikle aylık bir trafik sınırıyla gelir ve bu sınır aşıldığında ya ek ücret ödersiniz ya da siteniz geçici olarak askıya alınabilir. Hotlinking, bu kaynağı size hiçbir değer döndürmeden yakar.
Somut bir örnekle düşünelim. Diyelim ki 800 KB boyutunda kaliteli bir ürün fotoğrafınız var ve popüler bir forumda birisi bunu gönderisine gömdü. O gönderi günde 5.000 kez görüntüleniyorsa, tarayıcı önbelleğini saymazsak bile bu tek görsel günde yaklaşık 4 GB, ayda 120 GB civarında trafik demektir. Sitenizde onlarca böyle görsel varsa ve bunlar farklı sitelerde gömülüyse, hiç ziyaretçiniz olmadan trafik kotanızın tükendiğini görebilirsiniz.
Sorun yalnızca maliyet de değildir. Hotlinking aynı zamanda sunucu kaynaklarınızı (disk okuma, CPU, eşzamanlı bağlantı sayısı) meşgul eder ve gerçek ziyaretçilerinize hizmet verme kapasitenizi düşürür. Paylaşımlı bir hosting hesabındaysanız, ani bir hotlink dalgası I/O sınırlarınıza çarparak sitenizin tamamen yavaşlamasına yol açabilir. Bu yüzden hotlink koruması, sadece bir "adalet" meselesi değil, aynı zamanda bir performans ve kaynak yönetimi meselesidir. Kaynak tüketimini disk ve trafik düzeyinde nasıl izleyeceğinizi merak ediyorsanız /wiki/sunucu-guvenligi-temelleri yazısı bütünsel bir çerçeve sunar.
cPanel Hotlink Protection'ı Etkinleştirme#
cPanel'in Hotlink Protection aracı, Security (Güvenlik) bölümünün altında yer alır. Etkinleştirmek için şu adımları izleyin:
- Hosting hesabınızın cPanel arayüzüne giriş yapın.
- Ana ekrandaki arama kutusuna "Hotlink" yazın veya
Güvenlikbölümüne inip Hotlink Protection ikonuna tıklayın. - Açılan sayfada üst kısımda URLs to allow access (Erişime izin verilen adresler) başlıklı bir metin kutusu görürsünüz. Burada kendi alan adlarınız otomatik olarak listelenmiş olur; eksik varyasyonları elle ekleyebilirsiniz.
- Alt kısımdaki Block direct access for the following extensions (Şu uzantılara doğrudan erişimi engelle) kutusuna korumak istediğiniz dosya türlerini yazın. Varsayılan olarak
jpg,jpeg,gif,png,bmpgelir. - İsteğe bağlı olarak Allow direct requests (Doğrudan istekleri engelleme) seçeneğini işaretleyebilirsiniz. Bu, kullanıcı adres çubuğuna görselin URL'sini yapıştırdığında (yani
Refererboş geldiğinde) erişime izin verir. Genellikle işaretli kalması daha doğrudur, aksi halde e-posta önizlemeleri ve bazı meşru senaryolar bozulabilir. - Enable (Etkinleştir) düğmesine basın.
Bu kadarı, çoğu paylaşımlı hosting kullanıcısı için yeterlidir. cPanel bu ayarları kaydettiği anda, public_html dizininizdeki .htaccess dosyasına gerekli kuralları ekler ve koruma anında devreye girer. Aracı sonradan tamamen kapatmak isterseniz aynı sayfadaki Disable düğmesi kuralları geri alır.
İzin Verilen Alan Adları Listesini Doğru Kurmak#
Hotlink korumasının en sık yapılan hatası, izin verilen alan adları listesini eksik bırakmaktır. Liste eksikse, kendi siteniz bile görsellerini yükleyemez ve her yerde kırık resim ikonları görürsünüz. Bu yüzden listeye sitenizin ulaşılabildiği bütün varyasyonları eklemelisiniz.
Tipik bir liste şöyle görünmelidir:
https://siteniz.com
https://www.siteniz.com
http://siteniz.com
http://www.siteniz.com
https://cdn.siteniz.com
Dikkat edilmesi gereken noktalar şunlardır. Öncelikle www'lu ve www'suz sürümleri ayrı satırlar olarak eklemelisiniz; tarayıcı hangisini kullanıyorsa Referer o şekilde gelir. Sitenizi hâlâ HTTP üzerinden de yayınlıyorsanız hem http hem https sürümlerini eklemek gerekir; ancak modern kurulumlarda tüm trafiği HTTPS'e yönlendirmeniz beklenir, bu geçişi henüz yapmadıysanız /wiki/htaccess-yonlendirme yazısındaki HTTPS zorlama kuralları yardımcı olur. Görsellerinizi ayrı bir alt alan adından ya da CDN üzerinden sunuyorsanız (cdn.siteniz.com gibi), o alt alan adını da mutlaka listeye ekleyin; aksi halde CDN'e giden istekler kaynak sunucuda reddedilir.
İşin mantığını netleştirmek için izin verilen ve reddedilen durumları bir tabloyla özetleyelim:
| İsteğin geldiği kaynak (Referer) | Listede var mı? | Sonuç |
|---|---|---|
https://www.siteniz.com/urunler | Evet | Görsel gösterilir |
https://baskasite.com/blog | Hayır | İstek reddedilir |
| Boş (adres çubuğuna yapıştırma) | — | "Allow direct requests" ayarına bağlı |
| Google Görseller önizlemesi | Hayır | Genellikle reddedilir |
Son satır önemli bir kararı gündeme getirir: arama motoru görsel önizlemeleri de teknik olarak birer hotlink'tir. Görsellerinizin Google Görseller'de küçük resim olarak çıkmasını istiyorsanız, arama botlarının erişimini kısıtlamamaya dikkat edin. Çoğu kullanıcı için varsayılan davranış yeterlidir; SEO tarafında agresif kısıtlama trafik kaybettirebilir, bu dengeyi /seo tarafındaki hizmet ekibiyle değerlendirebilirsiniz.
Aracın Ürettiği .htaccess Kuralları#
cPanel'in bu güzel arayüzü aslında bir .htaccess kural üreticisidir. Etkinleştir düğmesine bastığınızda dizininizin .htaccess dosyasına aşağıdakine benzer bir blok eklenir:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?siteniz\.com [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?cdn\.siteniz\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|bmp)$ - [F,NC]
Bu kuralları satır satır okumak, aracın gerçekte ne yaptığını anlamanızı sağlar. RewriteEngine on, Apache'nin mod_rewrite motorunu bu dizin için açar. İlk RewriteCond satırındaki !^$ ifadesi, Referer başlığının boş olmadığı durumları hedefler; yani doğrudan adres çubuğundan gelen istekleri bu koşul kapsam dışı bırakır (bu, cPanel'deki "Allow direct requests" seçeneğinin karşılığıdır). Sonraki RewriteCond satırları, izin verdiğiniz her alan adı için "eğer referer bu değilse" mantığı kurar. En sondaki RewriteRule ise belirtilen uzantılara sahip dosyalar için, yukarıdaki tüm koşullar sağlandığında [F] (Forbidden, 403) yanıtı döndürür.
İşin güzel yanı, bu kuralları elle de düzenleyebilmenizdir. Örneğin reddedilen isteklere boş bir 403 yerine "çalıntı görsel" uyarısı taşıyan kendi resminizi göstermek isterseniz, son satırı bir yönlendirmeye çevirebilirsiniz:
RewriteRule \.(jpg|jpeg|png|gif|bmp)$ https://siteniz.com/gorsel/uyari.png [R,NC,L]
Bu değişiklikle, sitenizden görsel çalmaya çalışan sayfalarda otomatik olarak sizin uyarı görseliniz belirir; bu hem caydırıcıdır hem de ücretsiz bir tanıtım fırsatına dönüşür. mod_rewrite mantığını daha derinlemesine tanımak, bu kuralları özelleştirmek için önemli bir temeldir.
Belirli Dosyalar İçin İstisna Tanımlama#
Bazen tüm koruma kuralınızın işlemesini istersiniz, ama belirli dosyaların ya da klasörlerin serbest kalmasını gerekir. Örneğin bir iş ortağınızın sizin logonuzu kendi sitesine gömmesine izin vermek ya da bir RSS beslemesinin küçük resimlerinin dış kaynaklarda görünmesini sağlamak isteyebilirsiniz. Bunun için istisnalar tanımlarsınız.
En temiz yöntem, serbest bırakmak istediğiniz dosyaları ayrı bir dizine koyup o dizine kendi .htaccess dosyasını yerleştirmektir. Örneğin public_html/paylasilabilir/ klasörünün içine şu içerikte bir .htaccess koyarsanız, ana dizindeki koruma bu klasörde geçersiz kılınır:
RewriteEngine off
Alternatif olarak, korumayı uygulayan blok içinde tek bir dosyayı hariç tutmak isterseniz, kuralın önüne bir istisna koşulu ekleyebilirsiniz. Aşağıdaki örnek, logo.png dosyası dışında kalan tüm görselleri korur:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?siteniz\.com [NC]
RewriteCond %{REQUEST_URI} !/logo\.png$ [NC]
RewriteRule \.(jpg|jpeg|png|gif|bmp)$ - [F,NC]
Buradaki üçüncü koşul, istek URI'si /logo.png ile bitiyorsa kuralın atlanmasını sağlar; böylece logo dosyanız her yerden çağrılabilir kalırken diğer tüm görselleriniz korunur. Aynı yöntemle bir klasörün tamamını (!/basin-kiti/) ya da belirli bir dosya türünü istisna tutabilirsiniz. İstisnaları mümkün olduğunca dar tutmak iyi bir alışkanlıktır; ne kadar çok kapı açık bırakırsanız, korumanın anlamı o kadar azalır.
Nginx ve CDN Tarafında Hotlink Koruması#
Paylaşımlı hosting hesapları genellikle Apache üzerinde çalışır ve .htaccess yaklaşımı doğrudan geçerlidir. Ancak bir VPS ya da özel sunucuda Nginx kullanıyorsanız .htaccess çalışmaz; koruma kurallarını sunucu yapılandırmasına yazmanız gerekir. Nginx için eşdeğer bir location bloğu şöyle görünür:
location ~* \.(jpg|jpeg|png|gif|bmp|webp)$ {
valid_referers none blocked siteniz.com *.siteniz.com;
if ($invalid_referer) {
return 403;
}
}
Bu blokta valid_referers yönergesi, geçerli kabul edilen kaynakları tanımlar. none, referer başlığı hiç olmayan istekleri (doğrudan erişim) kabul eder; blocked, güvenlik duvarları tarafından temizlenmiş referer'ları kapsar; ardından gelen alan adları ise izin verilen sitelerdir. $invalid_referer değişkeni, istek bu listeye uymadığında 1 olur ve if bloğu 403 döndürür. Nginx kurulumunu ve location bloklarını yeni yapılandırıyorsanız, VPS tarafındaki genel süreç için /sunucu-yonetimi hizmeti ve sunucu paketleri için /sunucu/vds sayfası işinizi kolaylaştırır.
CDN kullanıyorsanız, hotlink korumasını çoğunlukla CDN panelinden de yönetebilirsiniz; bu, isteğin kaynak sunucuya hiç ulaşmadan CDN kenarında reddedilmesi anlamına gelir ki performans açısından en verimli yoldur. Cloudflare gibi hizmetlerde "Hotlink Protection" tek anahtarla açılan bir seçenektir. Daha geniş bir istismar filtreleme ve bot yönetimi gereksiniminiz varsa, uygulama seviyesinde bir /waf çözümü hotlinking'in ötesine geçen saldırı türlerini de kapsar.
Hotlink Koruması Yöntemlerinin Karşılaştırması#
Görsel hırsızlığına karşı tek bir yöntem yoktur; sitenizin altyapısına ve ihtiyaç düzeyinize göre farklı yaklaşımlar seçilir. Aşağıdaki tablo başlıca seçenekleri karşılaştırır:
| Yöntem | Uygun ortam | Kurulum zorluğu | Esneklik |
|---|---|---|---|
| cPanel Hotlink Protection | Paylaşımlı hosting (Apache) | Çok kolay (tek tık) | Orta |
| Elle yazılan .htaccess | Apache tabanlı her ortam | Orta | Yüksek |
| Nginx valid_referers | VPS / özel sunucu | Orta | Yüksek |
| CDN hotlink koruması | CDN'li her site | Kolay | Orta |
| Görsel filigranı (watermark) | Her ortam | İçerik iş akışı gerektirir | Düşük (teknik değil) |
Pratikte en sağlam yaklaşım katmanlıdır: paylaşımlı bir hesapta cPanel'in aracını açar, CDN kullanıyorsanız kenar tarafında da korumayı etkinleştirir ve gerçekten değerli görselleriniz için filigran eklersiniz. Filigran, referer tabanlı korumaların atlatıldığı durumlarda bile en azından görselin kaynağını görünür kılar. Görsel ağırlıklı, ticari değeri yüksek bir siteniz varsa bu katmanları birlikte kullanmak, hem trafiği hem de içeriğin itibarını korur.
Sıkça Sorulan Sorular#
Hotlink koruması görsellerimin arama motorlarında çıkmasını engeller mi?#
Bu ayarı nasıl yapılandırdığınıza bağlıdır. Arama motoru görsel önizlemeleri teknik olarak birer hotlink olduğu için, izin listeniz çok katıysa Google Görseller gibi hizmetlerde küçük resimleriniz görünmeyebilir. Eğer görsel aramadan trafik almak önemliyse, korumayı yalnızca kendi bant genişliğinizi ciddi biçimde tüketen kaynaklara odaklamalı ya da arama botlarını dışlamamaya dikkat etmelisiniz. Çoğu kullanıcı için cPanel'in varsayılan ayarı bu dengeyi makul biçimde kurar.
Hotlink korumasını açtım ama kendi sitemde de resimler kayboldu, neden?#
Bunun neredeyse her zaman tek bir sebebi vardır: izin verilen alan adları listesi eksiktir. Sitenizin www'lu ve www'suz sürümlerinden birini, HTTP veya HTTPS varyasyonunu ya da görsellerinizi sunan CDN alt alan adını listeye eklememiş olabilirsiniz. cPanel'deki Hotlink Protection ekranına dönüp erişime izin verilen adresler kutusuna sitenizin ulaşılabildiği tüm varyasyonları ekleyin. Ekledikten hemen sonra tarayıcı önbelleğinizi temizleyip tekrar deneyin.
Doğrudan erişime izin ver seçeneğini işaretlemeli miyim?#
Genellikle evet. Bu seçenek, referer başlığı boş gelen istekleri (kullanıcının adres çubuğuna doğrudan görsel URL'si yapıştırması, bazı e-posta istemcileri, belirli tarayıcı gizlilik ayarları) engellemeden geçirir. İşaretini kaldırırsanız koruma daha katı olur ama meşru bazı senaryolar da bozulabilir. Görselleriniz gerçekten hassassa ve boş referer'lı erişimi de engellemek istiyorsanız işareti kaldırabilirsiniz; aksi halde işaretli bırakmak daha güvenli bir varsayılandır.
cPanel'im yoksa hotlink korumasını nasıl yaparım?#
Sunucunuz Apache üzerinde çalışıyorsa, cPanel arayüzü olmadan da .htaccess dosyanıza kuralları elle yazabilirsiniz; bu yazıdaki örnek blokları kendi alan adınıza uyarlamanız yeterlidir. Nginx kullanıyorsanız valid_referers yönergesini sunucu yapılandırmanıza eklersiniz. Bir CDN kullanıyorsanız, çoğu sağlayıcı panelinde tek anahtarla açılan bir hotlink koruması seçeneği bulunur. Yani cPanel yalnızca bu işi kolaylaştıran bir arayüzdür, korumanın kendisi sunucu düzeyinde her ortamda mümkündür.
Hotlink koruması bant genişliği hırsızlığını tamamen durdurur mu?#
Büyük ölçüde durdurur, ama yüzde yüz kusursuz değildir. Referer tabanlı koruma, ileri düzey bir kötü niyetli kişinin referer başlığını taklit etmesi durumunda atlatılabilir; çünkü referer, istemcinin gönderdiği ve teoride sahte üretilebilen bir bilgidir. Bununla birlikte hotlinking'in ezici çoğunluğu, forumlarda ve bloglarda görselinizi kopyala-yapıştır yapan sıradan kullanıcılardan kaynaklanır ve bunlara karşı referer koruması son derece etkilidir. Gerçekten değerli içerikler için filigranı, CDN korumasını ve bir WAF katmanını birlikte kullanmak, kalan riski de asgariye indirir.
Kapanış#
Hotlink koruması, çoğu site sahibinin farkına bile varmadan bedelini ödediği sessiz bir trafik kaçağını kapatan, kurulumu dakikalar süren ama etkisi kalıcı bir önlemdir. cPanel'in tek tıklık aracı paylaşımlı hosting kullanıcıları için işi hemen halleder; arka planda ürettiği .htaccess kurallarını anlamak ise size istisnalar tanımlama, kendi uyarı görselinizi gösterme ve Nginx gibi farklı ortamlara aynı mantığı taşıma esnekliği kazandırır. İzin listenizi doğru kurduğunuz, www/HTTPS varyasyonlarını ve CDN alt alan adlarınızı eksiksiz eklediğiniz sürece, hem bant genişliğinizi hem de içeriğinizin emeğini korumuş olursunuz.
Görsellerinizi güvenle barındıracağınız, .htaccess ve Hotlink Protection araçlarının tam desteklendiği bir altyapı arıyorsanız Clou.TR'nin /hosting paketleri ve WordPress siteleri için özel olarak yapılandırılmış /hosting/wordpress çözümleri iyi bir başlangıçtır. Kendi Nginx yapılandırmanızı yönetmek istiyorsanız /sunucu/vds sunucularımıza göz atabilir, saldırılara ve bot trafiğine karşı daha geniş bir kalkan için /waf ve /ddos-koruma hizmetlerimizi değerlendirebilir, kesintisiz koruma için de düzenli /yedekleme planlarımızdan yararlanabilirsiniz. Sorularınız için destek ekibimiz her zaman yanınızda.