"Bu sayfaya doğrudan yük yok" mı

8 Cevap php

Bunu yapmak için en iyi yolu nedir soracağım, ama sonra ben bile gerekli olup olmadığını sormalısınız karar verildi. Ben JSP geliştirme yapılır görmedim, ama PHP yaygın bir uygulama gibi görünüyor. Ne bu arkasındaki mantık, ve ben bu karşı korumak yoksa, ben dikkate başka ne almak gerekir?

8 Cevap

Bu diğer benzer dillere göre PHP daha yaygın nedeni PHP'nin geçmişi ile bir ilgisi yoktur. PHP erken sürümleri varsayılan olarak ayarlama "register_globals" (aslında, bu bile gerçekten erken sürümlerinde bir ayar olmuş olabilir) vardı. Register_globals sorgu dizesine göre global değişkenlerin tanımlanması için PHP söyler. Yani bu suretle böyle bir script sorgulanan eğer:

http://site.com/script.php?hello=world&foo=bar

... Script otomatik değer "dünya" ile bir değişken $ merhaba tanımlamak ve değeri $ foo istiyorum "bar."

Eğer anahtar değişkenlerin isimlerini biliyordu eğer böyle bir senaryo için, bu sorgu dizesi bu değişkenleri belirterek komut sömürmek mümkün oldu. Çözüm? Çekirdek komut bazı sihirli dize tanımlayın ve sonra tüm yardımcı v komut sihirli dize kontrol ve orada değilse kefaletle olun.

Neyse ki, hemen hemen hiç kimse artık register_variables kullanır, ancak birçok komut hala çok kötü yazılmış ve onlar bağlam seslendi eğer zarar görmelerine neden aptalca varsayımlar yapmak.

Şahsen, ben tamamen web kök dışına denetleyicileri ve şablonları tutar (en azından varsayılan kurulumunda) Symfony framework kullanarak şeyi kaçının. Tek giriş noktası ön denetleyicisi.

Eğer dışarıdan web kökünden şeyi eklerseniz hiçbir şey can be doğrudan yüklenen gibi o zaman bir sorun değil.

Peki, Bu doğrudan web sunucusuna gönderilmesini içeren hassas önlemektir. Bu kesinlikle bir herşey dahil güvenlik önlemi değil, ancak sizin kurulum ile yardımcı olabilir.

Ancak, kullanıcı kendi komut dosyası eklemek için bir konumda olsaydı, hiç yardımcı olmayacaktır

Ben ciddi bir güvenlik önlemi olarak, 404 sayfa yayarlar ama ben bir sitenin iç yapıları hakkında bilgi, iç dosyalar bile isimlerini sızıntı sevmiyorum çünkü.

Dosyası sadece işlevleri varsa Ama sonra onay atlayarak hiçbir gerçek zararı yoktur.

Ayrıca php, sadece bir güvenlik özelliği değildir ama kaç MVC tabanlı PHP siteleri fonksiyon daha. Örneğin SugarCRM size böylece tüm bağımlılıkları yüklü olduğundan emin olmak için, kontrolör, görünümü ve model önceden yüklü değildi çünkü doğrudan sayfa yükleme başarısız olur ve siz de hiçbir db config / bağlantı bilgilerini olurdu bir modül dosyayı aramak için olsaydı Kullanıcıların bilinen bir giriş noktası aracılığıyla zorlanır - yani index.php

Ben sadece size IIS, bir web.config dosyası kullanıyorsanız Apache yeniden yazar. Htaccess dosyaları kullanarak veya PHP için çoğaltmak olabilir. Net MVC sisteminde bir yaklaşım bulundu.

MVC deseni doğrudan aspx bu servis edilmez ve bir 404 yerine gönderilen dosyaları erişmek için kullanıcı gerekiyor doens't gibi. Örneğin dahil edilen dosyalar "inc.php" için bir adlandırma kuralı varsa * yönlendirme olabilir inc.php isteklerini belirli klasörler için 404 -. Apache kural sonunda arz R = 404 Rewrite olduğunu HTTP durumu dönecektir müşteri için.

Bu örneklerden bazıları yardımcı olabilir: Apache Rewrite Examples

Zaten diğer bazı yanıtları belirtildiği gibi, bunu yapmak gerekmez. Bir dosya, web sunucusu tarafından sunulan gerekiyordu değilse, siz web klasör içinde bırakmamak gerekir. Içeren web kök dışında bir dizine konulmalıdır.

Bunun dışında, bir sayfa yok kullanıcı söylemek doğru yolu kullanarak, bir statü 404 yayan tarafından:

header("HTTP/1.0 404 Not Found");
exit;

Bunu yapmazsanız olmayan insanlar (Örn. arama motorları) düzenli bir sayfada olmayan bir sayfa ayırt etmek için, bu zor.

Eğer sitenizi Google Araç Çubuğu çalıştırıyorsanız düzenleme eğer, bu sizin iç php dosyalarını bulmak ve daha sonra arama sonuçlarında içine koyacağız, çünkü bu çok önemlidir. En iyi bu kullanıcılar için bir garip bir deneyim yaratacak ama özensiz bir programcı iseniz, veritabanı bağlantı bilgilerini ortaya koyabilir.