v2.5.2
Giriş yap

Giriş Yapılmadan Site İçindeki Dosyalara Erişimi Nasıl Engellerim?

redline
1,807 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhaba PT ailesi.

PHP ile basit bir login sayfası tasarlıyorum. Bu sayfadan giriş yapılmadan site içindeki dosyalara erişimi engellemek istiyorum.

Site içindeki dosyalar html olarak bulunur. PHP olsa giriş yapıldımı yapılmadı mı gibi sorgular yapabilirdim. Fakat ben site içine rastgele bir çok dosya atacağım, rar arşivleri html dosyalar vb. tek tek kontrol edemeyeceğim kadar fazla içerik olacak içinde.

Bu kontrolu nasıl yapabiliriz?

Cevap yaz
Cevaplar (7)
qplot
1466 gün önce

.htaccess ıle olmaz ındırmek ıstedıgınde de ınderemez adam

her dosyanın ısmını taratıp sql e yazdıracaksın. ve gizleyeceksın dosyaları faklı klasorde

sonra ındırırken o dosya adlarını random yaptırıp ındıreteceksın bır baglantı tek sefer calısacak.

inder.php dosyası tek ındırme baglantısı olacak her klasore ayrı lınk vs vermeyeceksın

böyle tarat veri tabanına yazdır tum dosya ısımlerını

$ac = opendir("dosyalar/");

while($veri = readdir($ac)){
	
$yaz=$db->prepare("INSERT INTO dosya (dosyad) VALUES (?)");
$yaz->execute([$veri]);
	
}
0kan87
1466 gün önce

Doğrudan erişim engellenemiyor. .htaccess ile dizin indexlemesini engelledikten sonra, indir.php diye bir dosya olusturursunuz bu dosyaya isteğinizi get ile ve üye girişi yapmışsa sağlarsanız. İndireceginiz dosyaların veritabanindan çağrılan id lerini get ile indir.php dosyasina gonderirseniz isimlerini gizlemiş olursunuz. Dosya ismi indirildiginde düzgün görüntülenir. Hiç vt de tutmayip dosya adini md5 ile hashleyerek de get ile gonderir dogru dosyayi indirtebilirsiniz. Bu sekilde dosyanin hangi dizinden indiği, hangi adı taşıdığı aşikar olmayacaktır. Klasör adi desifre oldu ise de adı degistirirsiniz tüm bu islemlerden önce. İndir php dosyasında oluşan get parametresi almış linkin direk kopyalanarak browserda calistirilmaya calisildiginda inmemesi icin de refferer kontrolü yaparsiniz olur biter.

aydinkeskin
1466 gün önce

cpanelden kapatmayı denersen daha iyi olur :)

apache ayarları
global ayarlar
indexes tiksiz oldumu oldu bitti

bütün dizinleri kapatırsın.

htaccess dosyası oluştur için
Options -Indexes
yaz yine kapatırsın.

makifgokce
1558 gün önce

https://gist.github.com/psdtohtml5/5646810
https://gist.github.com/vanita5/6293f77a5d9be686210b -> Bunu düzenlersen işine yarar gibi.validate() fonksiyonu içerisinde session kontrolü yaptırırsın.
https://codecanyon.net/item/customerfriendly-download-login/411480 -> Bunun ücretsizini bulamadım.

redline
1558 gün önce

Soru güncel. (Hala bir yolunu bulamadım.)

redline
1564 gün önce

@samkofte hocam evet o bir yöntem fakat o dizin listelemeyi engelliyor. İçerideki dosyalara ulaşmayı engellemiyor. Yani şöyle söyleyim;

https://www.samkofte.com/documents/

şeklinde yazdığında içinde bahsettiğiniz index varsa anasayfaya yönledirecektir, yoksa o klasördeki tüm dosyaları gösteren bir FTP arayüzü gelecektir ki bu hiç istenmeyen bir durum.

https://www.samkofte.com/documents/onemli.rar

Fakat bu şekilde dosya yolunu yazdıklarında içinde index.php olsa da olmasa da dosyaya ulaşabiliyorlar.

Benim yapmak istediğim https://www.samkofte.com/documents/ klasörüne erişim olmasın ama kullanıcı girişi yapıldığında (USER_ID isimli bir SESSION varsa) o klasöre erişim olabilsin istiyorum, bir yolunu bulamadım henüz.

samkofte
1564 gün önce

scriptlerde gördüğüm kadarıyla her bir dosyanın içine inde.php ekliyolar ve bunun içinde sadece location:index.php yani ana dizine gönderiyor ve girişi engelliyor