PHP, MySQL: Güvenlik endişe;

2 Cevap php

Benim web sitesinin güvenliğini test ediyorum. Ben localhost üzerinde, web siteme bir PHP sayfasını yüklemek için aşağıdaki URL'yi kullanıyorum:

http://localhost/domain/user/index.php/apple.php

Bunu yaparken, normalde sayfa yükleme değil; Bunun yerine sayfasında kullanılan resimler, simgeler basitçe / sayfasından kaybolur kaybolur. Sadece metin görünür. Ve de ben bu sayfadaki herhangi bir bağlantıya tıklayarak, bir gerekli sayfaya gitmeden yine aynı sayfada bana getiriyor. Yani böyle yerine search.php sayfa gezinme, bu index.php sayfasını yeniler ve sadece için hedef sayfanın sayfa adını ekler, search.php işaret eden "ARAMA" gibi diğer sayfalara, köprüler varsa URL sonu.

Örneğin, yukarıda bağlantısını kullandığını söylüyorlar. Daha sonra o vasiyeti de index.php sayfasını eksi görüntüleri yükler. Ben arama sayfasına gitmek için "Ara" linkine tıkladığınızda, ben URL aşağıdaki bakın:

http://localhost/domain/user/index.php/search.php

Benim. Htaccess dosyasında bir 404 hata sayfasına yapılandırılmış bir yönlendirme var, ama sayfa 404 hata sayfasına yönlendirme değildir. Uyarı Yukarıdaki URL sonuna doğru search.php . Ben tıklayın başka bir bağlantı, index.php sayfasını yeniden yükler ve yukarıda göstermiştir gibi sadece URL sonuna hedef sayfa adını ekler.

Ben bir 404 Hatası görmeyi bekliyordum ama bu olmaz. Benim web sitesinde bir "index.php" folder yok çünkü URL bile sayfasını yüklemek mümkün olmamalıdır.

Bunu çözmek için ne yapabilirim? Tüm yardım takdir edilmektedir.

Update:

Güvenlik endişesi kullanıcıların mevcut değil, özellikle http://localhost/domain/user/index.php/apple.php gibi (oldukça yanıltıcıdır) Mevcut olmayan bir sayfasını görmek mümkün olmasıdır. Bu bana bu hackerlar sitesini istismar ve bütünlüğünü tehlikeye için kapılarını açacak olduğunu hissettiriyor. Bu gibi bir durumda olabilir? Kullanıcıların bir 404 hata sayfası görmek istiyorum ve herhangi bir ben bu karşılamak için. Htaccess dosyasında gerekli herhangi bir değişiklik razıyım.

Eğer bunu gerçekleştirmek benim. Htaccess dosyasına ekleyebilirsiniz bazı kod bana önerebilirsiniz?

Teşekkür ederim.

EDIT1:

İşte benim. Htaccess dosyalarının içeriğini oluşturmaktadır. Onlardan 2 var. Etki alanı kökü biri ve 'kullanıcı' klasör / dizinin diğer.

/*.htaccess in domain root*/
ErrorDocument 404 /domain/404.php

/*.htaccess in user folder*/
ErrorDocument 404 /domain/user/404.php

EDIT2:

Bağlantı için @ Pekka teşekkürler. Ben (kullanıcı dizin içindeki). Htaccess dosyasında aşağıdaki kodu eklendi

<Files "mypaths.php">
Options +Includes
SetOutputFilter INCLUDES
AcceptPathInfo Off
</Files>

Ama yine de bu bana 404 sayfa görünmüyor. Üzgünüm, ben. Htaccess ile çok acemi değilim. Eğer ben yanlış bana ne söylemek mümkün olacağını umuyoruz. Teşekkürler.

2 Cevap

Bu bir sayfayı yükler neden davranışı:

http://localhost/domain/user/index.php/apple.php

kolayca açıklanabilir. Bu talep apple.php $_SERVER["PATH_INFO"] değişken olarak olmak üzere, index.php geçirilir.

Yani kadarıyla sunucu ve PHP komut dosyası ile ilgili olarak /user dizininde bulunmaktadır.

index.php her zaman olursa olsun son dosya olarak belirlediğiniz dosya, hangi bulundu: hayır 404 çıkıyor nedeni de budur.

Tarayıcı, ancak, yorumlama index.php olmayan bir dosya olarak, ancak parent directory olarak apple.php.

Bu nedenle, sayfaya koymak her göreli bağlantı, contact.php böyle zorlama olduğunu söylemek:

 http://localhost/domain/user/index.php/contact.php

hangi besbelli çalışmaz.

Ne yapmak isteyebilirsiniz görüntüleri ve bağlantıları mutlak yolları kullanmak olduğunu, ancak her iki durumda da, bu olursa olsun güvenlik için hiçbir endişe kaynağıdır.

Bir yan not olarak, bütün bu fenomen bazen mod_rewrite modülü kullanmak zorunda kalmadan arama motoru dostu URL'ler oluşturmak için kullanılır.

Sen AcceptPathInfo yönergesi kullanarak bu davranışı kapatabilirsiniz.

Görüntülere gelince, sadece kesinlikle gerekli olan, görüntülere absolute paths kullanmayı öğrenmek zorunda

Sadece yerine images/head.jpg yazmak /images/head.jpg ve yerde tüm görüntüleri ve stilleri var olacaktır.

As for the /user/index.php/apple.php - why do you want such an odd address?
Why not to use just user/apple.php?

Ve nerede güvenliği söz konusu olduğunda?