direkt link korumaları artık botlardan kurtulmaya yetmiyor. headera referer gömüp gönderebilmek zor olmadığı için hotlink korulamarı hiç birşeye yaramaz oldu. linklerimizi şifreleyelim her gun değişen urlmiz olsun htacces ile .

ilk once şifrelemek istediğimiz  dosya türü belli olsun ya da olmasa bile farketmez de ben mp3 uzantıları dinamik yapmak istiyorum mesela.

dinamik algoritmamız  aşağıdaki gibi olsun

0
1
 
  /md5(date('dmY').'şifremiz')/dosya_adi.mp3 

 o günün tarihi dmY formatında ve yanında da belirlediğimiz bir şifremizle birleştirerek md5 i alınmış şekilde olsun

yani bugünün tarihi için gizli_klasor/sagopa_kajmer.mp3 dosyasını çağırabilmek için url miz aşağıdaki gibi olacak

0
  href="05da04fb04c034b30e4c03601/sagopa_kajmer.mp3"

bunun için bize htaccess lazım ufacık
direklink ya da botlara karşı birşeyler yapmak istiyorsunuz sanırım ama bunu hergün klasor ismi değiştirip veritabanından da değiştirmek yerine htaccess kullanabilirsiniz.

0
1
2
3
4
5
Options +FollowSymLinks IndexIgnore / RewriteEngine on
# Yazdıkları Adreste Bir Dosya Varsa açsın
RewriteCond %{REQUEST_FILENAME}
!-f RewriteCond %{REQUEST_FILENAME} !-d
# Eğer Yoksa gizli_dosya.php ye gitsin
RewriteRule ^.*$ /gizli_dosya.php [L]

girilen adreste bir dosya varsa açsın bunu da engelleyebiliriz eğer htaccess dosyasının olduğu yerde diğer kullandığımız dosyalar yoksa buna da gerek yoktu..

şimdi bunu engeledik ve her istek gizli_dosya.php dosyamıza geliyor. şimdi bu dosyamızı kodlayalım.

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
//Şifreli adresimizi karşılicak adresin görüntüsü /32karatermd5/dosyaadi.mp3 bunu regexp ile yazalım
$pattern='/(?<md5>[A-Fa-f0-9]{32})(\/)(?<dosya_adi>[a-zA-Z0-9_-\.]+)(\.)(?<uzanti>mp3)/i';
 
//eğer uzantıları arttırmak istersek (?<uzanti>mp3|rar|mpg|jpg) gibi arttırabilirz
// Adresimiz bu görüntüye uyuyormu onu kontrol edelim uymuyorsa 404 hatası verdirelim.
if (preg_match($pattern, $_SERVER['REQUEST_URI'], $Parcaciklar))
    {
        $dosyamiz='gizli_klasor/' . $Parcaciklar['dosya_adi'] . '.' . $Parcaciklar['uzanti'];
 
    // eşleşenler bize $Parcaciklar dizisi olarak dönecek  dosyamız varsa ve md5 algoritmamıza uyuyorsa dosyayı cıktı olara verioruz
    if (is_file($dosyamiz) AND $Parcaciklar['md5']==md5(date('dmY').'şifremiz'))
        {
            // uzantilari kontrol edip header atarsak   her tarayıcı için uyumlu hale gelir  mp3 için yazalım
               header("Content-Type: audio/x-mp3");
               header('Content-length: ' . filesize($dosyamiz));
               header('Content-Disposition: filename="' .$Parcaciklar['dosya_adi'].'.'.$Parcaciklar['uzanti'].'');  
               echo file_get_contents($dosyamiz);
                          die(); // çıktıyı verdikten sonra öldürmeliyiz yoksa aşağıdaki not found bloğuna düşer ve hata alırız.
        }
 
    }
 
    header("Status: 404 Not Found");
?>

aartık dosyalarımız  dmY formatlı tarihin yanına şifremiz sıkıştırılarak yazılmış bir klasorun içinde gizli gibi ..

© 2012 Tufan Suffusion theme by Sayontan Sinha