htaccess ile dinamik-şifreli url yapalım

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 ..

  • No Related Post

    • No Related Post
bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark
tabs-top


1 Yorum »

  1. Nurettin Says:

    Güzel bir döküman ve baya yararlı

    comment-bottom

Bu yazıya yapılan yorumlar için RSS beslemeleri. TrackBack URL

Yorum yapın