PHP | Jquery | Css | Codeigniter | Unity3D


Php ile yolunun görünmesini istemediğiniz dosyaları, dosya yolu görünmeden indirmeye zorlayabilirsiniz. Bu nedemek ve neden gerek duyarız ?

Normalde a linki ile dosya indirtebiliriz ancak özel bir url aypınız yoksa ve sunucunuzda da klasör erişimi veya dosya indirme linklerinizde session güvenliği gibi önlemleriniz yoksa bu büyük bir güvenlik açığı anlamına gelmektedir. Session güvenliği olsa dahi sisteme giriş yapmış olan bir kullanıcı kendine ait olmayan ve yolu ile adını bildiği bir dosyayı adres çubuğuna yazarak rahatlıkla indirebilir. Peki bu php güvenlik açığını nasıl gideririz?

Normalde indirme linkleri verdiğimiz dosyaların sadece adlarını veri tabanına kaydederiz çünkü url farklılık gösterebilir. Peki bir kullanıcı sizin dosyalarınızın bulunduğu kalsörün sunucudaki erişim yolunu bilirse ne olur ? Hatta kendine ait olmayan dosyaların adını bir şekilde öğrenirse ? İşte burda yapmamız gereken veritanına eklediğimiz dosyaların linkine o dosyanın veri tabanındaki id değerini verip başka bir sayfaya yönlendirme yapabiliriz. Mesela dosyaindir.php?id=16 diye link verdiğimizde dosyaindir.php sayfasına 16 id değerini gönderir ve url görünmez. Diğer sayfada da bu id ye sahip dosyayı bie sql sorgusuyla adını çekip php dosya indirme koduyla otomatik indirebiliriz. Şimdi kodumuza bakalım.


<?php

function force_download($file)  
{  
    if ((isset($file))&&(file_exists($file))) {  
       header("Content-length: ".filesize($file));  
       header('Content-Type: application/octet-stream');  
       header('Content-Disposition: attachment; filename="' . $file . '"');  
       readfile("$file");  
    } else {  
       echo "No file selected";  
    }  
}  

force_download("files/dosya.docx") // İndirilecek dosya yolunu belirtiyoruz.

?>



Google


Soru ve Tartışma Konularınız için;

Yayınlayan
comments powered by Disqus
Yazar: Windofelm
Description: Php ile yolunu gösterdiğiniz dosyayı indirmeye zorlayabilirsiniz.