open_basedir
"Site başına" olarak ayarlamayı düşünün . open_basedir
komut dosyalarınızın tanımlanmış bir beyaz listenin dışındaki dosyalara erişmesini engelleyen bir php.ini ayarıdır. Sunucunuz birkaç site barındırıyorsa, bir sitenin başka bir siteden veritabanı ayarlarını okumasını önleyecektir. Ayrıca bir php betiğinin çekirdek sistem dosyalarına erişmesini / değiştirmesini önler. Açık basedir kurulumu kolaydır, php_admin_value open_basedir /my/list/of/folders:/as/a/colon/seperated/list
her Apache vhost'a " " satırı ekleyin .
Ayrıca, PHP betiği içermemesi gereken tüm siteler / klasörler için PHP betiği motorunu kapatmayı düşünün (örn. Yüklenen bir görüntüler klasörü). Yine, bu basittir, php gerektirmeyen Apache VirtualHosts'a "php_admin_value engine off" komutunu ekleyin. PHP'yi bir dizinde devre dışı bırakmak için aynı şeyi bir Directory etiketine yerleştirin.
Dosya izinlerini olabildiğince sıkı çalıştırın, Apache kullanıcısı için PHP komut dosyalarına yazma erişiminden kaçının; bu, çalışan bir komut dosyasının kendisini veya aynı site / sunucudaki diğer komut dosyalarını değiştirmesini önler. Mümkünse, 777 izinlerinden kaçının, uygulamayı çalıştırmak ve kullanmak için gereken minimum izinleri belirleyin.
Her biri kendi veritabanına sahip birden fazla site barındırıyorsanız, her biri için ayrı bir MySQL / Postgres kullanıcısı kullanın ve her bir kullanıcı için yalnızca ilgili veritabanlarına erişebilecekleri izinleri ayarlayın. Yine, bu haydut bir komut dosyasının başka bir uygulamanın veritabanına müdahale etmesini önler.
Suosin, HardenedPHP, mod_security ve benzerlerinin hepsi de değerlidir, ancak bunları yerine değil, sıkıca kilitlenmiş bir yapılandırmaya ek olarak kullanın.