Apache İndirme: emin sayfası indir önce görüntülendi olun

6 Cevap php

Eldeki iş:

Ben bir indirme başlamadan önce, benim web kullanıcıları bir sayfayı görüntülemek emin olmak istiyorum. Onlar sayfada baktı ama dosyalara hotlink çalışın varsa indirme izin verilmeden önce, doğrudan onlar web sayfasına gitmek gerekir.

İndirme işlemi başlamadan önce - - bir çerez göndermek benim fikir daha iyi ve herhangi bir öneriniz çerez varsa (. Htaccess yoluyla) kontrol?

Web sayfası ve dosya indirme farklı sunucularda yer alacaktır.

Çevre:

  • Tüm makinelerde Apache 2
  • Tüm makinelerde PHP 5
  • "Web" sunucu (yükleme sunucularından erişim yok) mevcut MySQL 5

Nathan sorun ben çözmek için deneyin ne olduğunu sordu, ve aslında ben gelen hotlinks engellemek istediğiniz - örneğin - forumları. Insanlar bizim bant genişliğini kullanarak, bizim sunucudan indirmek, ben indirme başlamadan önce bir reklam ile onlara bir sayfayı göstermek istiyorum. Bu tamamen güvenli olması gerekmez, ama biz doğru, sunucularını finanse etmek için biraz para yapmak gerekir? :)

6 Cevap

I mod_auth_token kullanıcı bir "yeni bağlantı" olduğundan emin olmak için kullanmak için gidiyorum.

Birisi Varolan bir bağlantıyı almak ve başka bir web sitesine gönderebilir karar eğer bağlantıları dolan oluşturabilirsiniz mod_auth_token ile, yani bu bağlantı belirli bir süre sonra sona erecek. Ben yakalamak ve onu istediğiniz HTML sayfası kullanıcıyı yönlendirebilirsiniz hangi YASAK bir 403 neden olacaktır.

Bunun yerine dosyaları hotlinking izin, bir web erişilebilir rota dışında saklayın. Bunun yerine indirme istekleri indir başlatan bir php komut dosyası gitmek olun. Siz talep sayfa okumak istedim biriydi sağlamak için yerine çek koyabilirsiniz.

Apache mod_rewrite RewriteRule yapabilirsiniz.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www.example.com/page.html$
RewriteRule file.exe http://www.example.com/page.html [R=301,L]

Temel olarak, eğer file.exe page.html yönlendirme gibi, 301 kullanıcıyı yönlendirme olacak gelmedi isteği page.html.

Sen distributed server side oturumları yerine kurabiye kullanabilirsiniz, ancak bu muhtemelen bu değer daha fazla sorun olduğunu.

Yapabildin Ayrıca forbid access, bir yönlendirme olmadan veya yanlış yönlendirme ile istekleri. Ama bu daha fakable bir tanımlama daha var.

Bu bakım ne kadar bağlı olur.

Burada çözüm çözmeye çalıştığınız sorun bağlıdır. Sadece doğrudan bir bağlantı sonra sadece ile yönlendirme kontrol, forumlar ve etajer yayınlanmıştır almaz emin olun çalışıyorsanız. Htaccess yeterli olmalıdır. Tabii yönlendirme yeterince kolay sahte olabilir, böylece yaparken birinin riski bir sorun olup olmadığını, daha sonra başka bir şey yapmak gerekir.

Eğer biraz daha güvenli bir şey gerekiyorsa Çerez hile yapmak gerekir. Dosya sunucusu ve web sunucusu farklı kutulara çünkü biz sadece php oturumları kullanamazsınız. Ama biz bir zaman hash dayalı bir çerez, ve bazı gizli değer yaratabilecek.

cookievalue = sha1('secretvalue'.date('z-H'));

Kullanıcı gerçek dosyayı istediğinde, dosyasunucusu yine bu çerez oluşturur ve emin kullanıcıları maçlar yapar. Bu, kullanıcı tanımlama forges bile, bir saat sonra geçersiz olacak, bu yüzden kimin umurunda, onlar gizli değerini bilmiyorum çünkü onlar, kendi yenisini oluşturmak anlamına gelir.

Ben. Htaccess sevk hile önermek üzereydi, ama çok güvenli bir yöntem değildir. Bu özel bir http-sevk ile, bir PHP komut dosyası yapmak kolay ekledi. Orada indirme sayfasına girerseniz, bu o sayfa geliyor düşünüyorum olacaktır.

Bu önemli bir sorun var mı? Eğer indirme sayfasına bağlamında hakkında bir şeyler söyleyebilir misiniz?