htaccess Dosyası ile Hotlink Koruması

Bu yazımın bilgi güvenliği kategorisine mi yoksa bir başka kategoriye mi girebileceği konusunda çok kararsız kaldım ama sonunda kanaat getirdim ki bu kategoride olmalı, ne de olsa bilgi güvenliği genel bir kavram ve server’inizda yüklü bir resmin vs. sizin sitenizin dışında herhangi bir yerde gösterilmesini istememeniz de bir güvenlik kuralı. Bunu yapmanın kaç çeşit yolu kaç farklı metodu var bilmiyorum ama en kesin olanı ve benimde kullandığım, bu konuda yardım isteyenlere önerdiğim bir yöntem var bu da server’imizin root dizininde bulunan .htaccess dosyası (yok ise o isimde bir dosya oluşturularak yapılabilir) ile bu dosyaya ekliyeceğimiz bir kaç satır komut. Htaccess doyasına yazılanlara komut diyorum, çünkü bir kodlamadan çok Server’a nasıl davranması gerektiğini anlatan kodlar mantığında çalışıyor. Bazen bazı sitelerde karşıma çıkıyor bundan kod olarak bahsetmişler, bu yüzden bunu açıklama gereği duydum. İlk olarak Hotlink koruması nedir ve neden ihtiyaç duyarız bundan bahsetmek istiyorum. Hotlink adından da anlaşılacağı üzere sıcak bağlantıdır ve bizim server’ımızda duran bir dosyayı link’ini yazarak başka bir sitede yayınlamak veya yine lokasyonu bizim server’ımız olan .rar uzantılı bir dosyayı bir başka siteden link vererek indirmenin adıdır.

Resim, müzik, döküman vs. tümü için geçerlidir. Bir dezavantajı daha ki çoğu insanın muzdarip olduğu konu da budur, eğer host’unuz Bandwith kotası koymuşsa ve biriside sizin sitenizdeki resimleri kendi sitesinde linklerini yazarak alıp gösteriyorsa, bu sizin bandwith limitinizi doldurur. Tabi ki bir kaç resim ile bu pek mümkün değil fakat sisteminizin bir resim dosyası için kaynak olarak çok fazla kişi tarafından kullanılması veya bir .rar uzantılı doyayı indirmek için sitenizin kaynak olarak kullanılması bandwith sınırınızı zorlamaya yardımcı olabilir. Diğer bir yandan site sahipleri şunu da diyebilir; “Eğer benim oluşturduğum bir ortam dosyasına erişecekse kullanıcılar bunu benim sitemden yapmalılar, ben kimse için dosya deposu görevi görmek istemiyorum.” da diyebilirler, haklılar. İşte bu noktada hotlink korumasının önemi ortaya çıkıyor, bunun için de kimine göre tek yol kimine göre en etkili yol olan .htaccess dosyasında yapılan düzenlemeler olarak görünüyor. Peki, şimdi gelelim dosyayı nasıl düzenleyeceğimize. Eğer Hostunuzun “Root” dizininde “.htaccess” isimli bir dosya yok ie bunu oluşturmanız gerekiyor. (Tabi hostunuz bu dosyayı çalıştırmanızı destekliyor olmalı, çünkü bir kaç türk hosting firmasında bunun olmadığını gördüm, fakat bir mail yada ticket yoluyla bu sorununuzu çözüyorlar) Eğer .htaccess dosyası mevcut ise root dizininde bir düzenleyicide (NotePad++ vs.) açın ve bir başka komut içerip içermediğine bakın örneğin ReWrite Rules kullanıyorsanız, en altına inin ve ordan devam edin, bu .htaccess dosyasında hiçbir sorun yaratmaz. Aşağıda bir komut satırı verdim, hazırlıyacağımız aslında tam olarak bu, yani .htaccess dosyanızda yazması gereken tam olarak böyle, devamında bunların ne olduğunu açıklıycam.

RewriteEngine On RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?serkanulu.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(subdomain1.)?serkanulu.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(subdomain2.)?serkanulu.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?serkanulu.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(webcache.)?googleusercontent.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?googleusercontent.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.com.tr [NC]
RewriteRule .(jpg|jpeg|png|gif|mp4|flv|mp3|mov|ogg|pdf)$ http://(YONLENDİRİLMESİNİ İSTEDİĞİNİZ DOMAİN)/guvenlik.png [NC,R,L]

Yukarıdaki komut listesinde gördğünüz ilk komut olan “RewriteEngine On” komutu, server’a RewriteEngine (yeniden yazım motoru) desteğini aktif etmesi gerektiğini söylüyor, bu sayede istediğiniz yönlendirmeleri yapabiliyorsunuz, örneğin bir sayfanın; siteadresi.com/konular.php şeklinde görünmesi yerine siteadresi.com/konular/ şeklinde görünmesi sağlanabiliyor. Daha sonra devamında bulunan komutlar, “HTTP_REFERER” şeklindeki parametreye bağlı, bu parametre ise yada değişken yapılan işlem sırasında o işlemi refere eden adres içeriği barındırıyor, yani siz bir link’e tıkladınız fakat o link’e serkanulu.com’dan mı tıkladınız yoksa falanfilan.com/abc/ gibi bir yerden mi onun bilgisini içeriyor. 4., 5., 6., 7., 8., 9., ve 10. satırda yer alan komutlar ise yalnızca izin verdiğimiz Referans adreslerini içeriyor, yani bu komutlar server’a şu mesajı gönderiyor, yalnızca bu yazdığım adresleri referans olarak kabul et diğerlerine hotlink koruması uygula. Bunu yapmamızın sebebi, tüm referansları bloklayan .htaccess komutlarımız bizim kendi sitemiz de dahil bir engelleme uygular, bu yüzden kendi site adreslerimizi ve “subdomain” yazan kısımlarada eğer varsa Alt alan adlarımızı eklemeliyiz, bir alt alan adımızı eklemediğimiz takdirde o alan adı engellediğimiz içeriğe ulaşamaz, dolayısı ile sayfa tasarımında yer alan .png veya .jpg uzantılı resimler dahi sayfa içerisinde görüntülenemez. 11. satırda yer alan komut ise, bizim hangi hangi dosya uzantılarını hotlink’ten koruduğumuzu ve o uzantıdaki bir dosyaya farklı referans adreslerinden erişilmek istendiğinde bizim onu hangi adrese yönlendirmemiz gerektiği bilgisini içeriyor. Hotlink koruması altına almak istediğimiz dosya uzantılarını “|” ayracı iler ayırarak istediğimiz kadar yazabiliriz. Önlerine nokta koymadan sadece uzantı ismini yazmamız yeterli olucaktır. “YONLENDİRİLMESİNİ İSTEDİĞİNİZ DOMAİN” yazan kısımda ise bandwith koruması adına bir hile yapılmaktadır aslıda, burada herhangi bir adresteki siteniz ieçrisindeki “/guvenlik.png” resmine link verilmiştir. Nedeni ise ücretsiz hostlardan alıcağınız bir alana Örneğin; google, hotlink bağlantısı yapıldığında görüntülenmesini istediğiniz bir resmi yükleyin, ve bu kısıma da o adresi yazın, hotlink korumasına aldığınız dosya uzantılarına sahip herhangi bir dosyanıza farklı bir adres üzerinden erişilmek istendiğinde o resimle karşılaşıcaklardır. Eğer sadece hotlink korumalı içeriğe erişlmesin istiyorsanız ve herhangi bir uyarı niteliğinde mesaj göstermek istemiyorsanız, yuakrıdaki komutlardan gerekli yeri silerek kullanabilirsiniz. Ben yukarıdaki komutlarda izin verilen adresler kısmına Google User Contents’i de yazdım çünkü google sitenizi önbelleklediğinde, yalnızca text içeriği alıyor, eğer bu adrese izin vermezseniz sitenizin önbelleklenmiş şekline baktığınızda resimlerinizin hiçbiri görünmeyecektir.

Related Posts
1 Comment
Bir Blog Sonra

Bu programla fazla, birşey çekilemiyor diye biliyorum sadece resimler falan. Onuda almak isteyen insan, sağ gösterip kaynaktan alabilir. ama html siteleri baya iyi çekiyor :)

Leave a Reply

Your email address will not be published.Required fields are marked *