PHP belli bir dizinde dışındaki dosyalara erişimi engellemek

1 Cevap php

Benim web sitesi web dizini dışındaki dosyalara erişmek için birçok .. / s olan bir sorgu dizesi parametresi geçirerek kesmek olabilir zor yoldan öğrendim, ve daha sonra web sitesi hack ettik.

Dosyası belirli bir kök dizini dışında içerir izin vermez belki php.ini üzerinden bir yol var mı?

Kötü şeyler yapmak için, sunucu üzerinde çalışan bir çoğu benim kod değildir. Web sitesi CMS Joomla çalışır! ve istismar bir satın eklenti ile yapıldı.

Ben o gelmek varsa, ben sadece etkilenen eklentileri kaldırmak olacak, komut değiştiremezsiniz.

1 Cevap

Yes, PHP has a configuration parameter called open_basedir exactly for that purpose.
(don't forget to add to it at least session_save_path directory)

But! Zaten her geçen parametre kontrol etmelisiniz!

if it's supposed to be just a filename, truncate it using basename() function. if it's supposed to be a directory, you can check it with such a code

$basedir = "/your/app/path/";
$realdir = realpath($basedir.$filename); //$filename is the parameter we checking

if (substr($realdir,0,strlen($basedir)) !== $basedir) {
  header ("HTTP/1.0 403 Forbidden"); 
  exit; 
}