. Htaccess yoluyla Hotlinking Önleme Etkin Yöntem

4 Cevap php

Ben birilerini suçluyorlar gitmeden önce bir şey onaylamak gerekiyor ... iyi Doğrusu söylemek istemiyorum.

The problem:

Kullanıcıların görüntüleri yükleyebilir ve sitemizde metin içinde onları gömmek için izin verir. Geçmişte biz kullanıcıların yanı sıra bizim resimlere hotlink izin, ama nedeniyle sunucu yükü maalesef bu durdurmak zorunda kaldı.

Current "solution":

Yöntem, bizim "çok sayıda bağlantı" sorunu çözmek için kullanılan programcı alır ve image_request2.php görüntü istekleri (image_request.php) işler dosyasını yeniden adlandırın ve birlikte orijinal içeriğini değiştirmek oldu

<?php
header("HTTP/1.1 500 Internal Server Error") ;
?>

Açıkçası bu onların src niteliği kırık olması orijinal image_request.php işaret ile tüm görüntüleri neden oldu, ve bu durumda da gönderme gibi yanlış koddur.

Proposed solution:

Ben daha zarif bir çözüm olacağını hissediyorum:

. Htaccess içinde

  1. Istek image_request.php için ise
  2. Yönlendirme kontrol
  3. Yönlendirme bizim site değilse, uygun başlık göndermek
  4. Yönlendirme bizim site ise, image_request.php geçin ve süreç resim isteği

What I would like to know is:

Sadece image_request.php her istek için bir 500 dönen karşılaştırıldığında:

Benim önerilen alternatif çözüm yukarıda özetlenen kullanmak olsaydı ne kadar more yük tahakkuk olurdu?

Bunu yapmak için daha iyi bir yolu var mı?

Bizim ana endişe sitesi kadar kalır olmasıdır. Tüm içten bağlantılı görüntüleri kırma bu çözmek için en iyi / tek yolu olduğunu kabul etmek istekli değilim. Çünkü BİZ değişti şey artık elle tüm bunların önceden yüklenen içerik embed kodunu değiştirmeniz gerekir kullanıcılarımıza söylemekten reddediyorum.

4 Cevap

ModRwrite kullanarak muhtemelen bir PHP komut dosyası çalıştıran daha az yük verir. Ben çözüm hafif olacağını düşünüyorum.

Referer başlık boş değilse sadece 3. adımda erişimi engellemek emin olun. Bazı tarayıcılar ve güvenlik duvarları tamamen referer başlığını blok ve bu engellemek istemem.

Tamam, o zaman sıcak bağlanmayı önlemek için Apache mod_rewrite özelliği kullanabilirsiniz:

http://www.cyberciti.biz/faq/apache-mod_rewrite-hot-linking-images-leeching-howto/

I assume you store image paths in database with ids of images, right? And then you query database for image path giving it image id.

Ben sunucuya memcached yüklemek ve kullanıcı istekleri önbelleğe yapmanızı öneririm. PHP ile yapmak kolay. Bundan sonra sunucu yükü görmek ve tüm bu hotlinking şeyi durdurmak olmalıdır eğer karar verecek.

Sizin artan yük PHP (zilch) bir dize karşılaştırma eşittir.

Bu olay gelecek olurlar durmuyor gibi şaşırtmaca çözüm bile, başlamak için sorunu çözmüyor. Eğer yönlendirme başlığını kontrol yaparsanız, beklediğiniz gibi tüm büyük ana tarayıcılar başlığını koyacaktır kesinlikle emin olun. Bu isteğe bağlı bir başlık, ve davranış tarayıcıdan bir HTML belgesinde gömülü görüntüler için tarayıcınıza değişebilir.

Büyük olasılıkla seans (onlar doğrulanmış ya da ister) tüm istekler için etkin olan - bir yedekleme planı olarak, aynı zamanda karanlık (edit şey için oturum tanımlama isim verebilirsiniz: bilinmezlik aslında burada etmez meselesi sürece çerez olarak (ve o)) sadece ev sahibi için belirlenen ve (hiçbir çerez set) sitenize ilk isteği olduğunu belirtmek istiyorum bu isimde bir çerez image_request.php ayarlanmış olduğunu kontrol edilmektedir. Yalnızca son çare veya fazlalık çek olarak kullanmayın. Bu yönlendirme kontrol beter.

Eğer markdown ya da başka bir şey anında IMG HTML üreten olsaydı, sorgu dizesine bağlı bir kısa-canlı dolacak zaman bir özel anahtar karma stratejisini kullanabilirsiniz. Tamamen sıkı hava, ama ne yaptığınızı için üst üzerinde yol gibi görünüyor.

Ayrıca, sadece 404 göndermek ;) bir kaynağın kullanılabilirliği hakkında bir müşteriye yalan için "uygun başlık" var.