Bir sayfaya bağlantı dışında önlenmesi

3 Cevap php

Benim indirme işleyen bir yükleme komut dosyası var:

download.php?file=file_refrence_here

Nasıl gibi kendi sitesinde bir link koyarak birinin önleyebilirsiniz:

http://www.mysite.com/download.php?the_file_refrence

Görünüşe $_SERVER[HTTP_REFER] güvenli değildir.

Ben genel bağlama onların başlık dizeleri değiştirmek için yeterince akıllı değil insanlar hakkında sadece endişe duyuyorum rağmen.

3 Cevap

Bir yolu karşıdan izin vermeden önce doğrulanmış bir zaman sınırlı karma dahil olacaktır. Bir dağıtılmış bağlantı sonra sadece kullanılabileceği zaman küçük bir pencere vardır.

Örneğin

$file="foo.mp3";
$salt="youpeskykids";
$expiry=time()+3600;
$hash=md5($salt.$file.$expiry);

$url="download.php?file=$file&e=$expiry&h=$hash";

Eğer böyle bir isteği işlerken Şimdi, karma yeniden hesaplamak ve sunulan karma eşit olduğunu kontrol edebilirsiniz: Bu kim URL'yi yapılan bir umut tuz, bilir sağlar sadece sitedir. Karma geçerli ise, o zaman bitiş süresini güvenebilirsiniz, ve dolmadığından, indir sağlar.

Eğer download linki istenen user-agent aslında yüklemeyi yapan biri olduğunu daha fazla güven istiyorsa, IP adresi ve kullanıcı aracısı gibi, dilerseniz de karma başka şeyler içerebilir.

Eğer bir kağıt üzerinde kelime sunflower yazmak birisi engel olamaz gibi sayfanızda bağlantı birinin engel olamaz.

Böyle bir bağlantıyı izleyerek bu kaynağı indirirken neden olacaktır bunu önlemek istiyorsanız Ancak, bazı şekilde isteği doğrulamak gerekir. Bu sadece sayfa oluşturabilir rastgele, geçici geçerli kimlik doğrulama jetonu oluşturarak yapılabilir.

Başka bir yolu indirme bağlantısı oluşturulduğunda, kullanıcının IP adresini içeren bir veri paketi şifrelemek ve URL bu geçirmek, olacaktır. Indir komut paketi çözer ve IP adresi geçerli uzaktan adresiyle uyuşmuyor ise erişimi reddeder.

Bu şekilde, herhangi bir zaman sınırı (sevdim varsa onlardan biri de dahil edilememiştir değil) var, ama dosya başlangıç ​​sayfasını izlendi olandan başka herhangi bir IP adresinden indirilebilir olamaz.