Apache'ye modül olarak kurulum
PHP bir Apache modülü olarak kullanıldığında Apache kullanıcısının (Apache
yapılandırma dosyasında user yönergesine bakın) yetkilerini miras alır. Bu
kullanıcı genellikle 'nobody' kullanıcısı olur fakat bunun güvenlikle ve
kimlik doğrulama ile ilgili olumsuz etkileri olabilir. Örneğin PHP'yi bir
veritabanına erişmek için kullanıyorsanız ve bu veritabanına yerleşik
olarak erişim izniniz yoksa "nobody" kullanıcısına bu veritabanına erişim
izni vermek zorunda kalırsınız. Bu, kötücül bir betiğin bir kullanıcı ismi
ve parola belirtmeksizin veritabanına erişebilmesi ve değişiklik
yapabilmesi anlamına gelir. Bir ağ örümceğinin veritabanı yönetici
sayfasına rast gelmesi ve tüm veritabanınızı yok etmesi çok mümkündür. Bu
gibi durumlardan Apache kimlik doğrulaması ile korunabileceğiniz gibi
LDAP, .htaccess dosyaları, vs. kullanarak kendi erişim modelinizi
tasarlayabilir ve bu kodu PHP betiklerinize dahil edebilirsiniz.
Güvenliğin sağlanması, PHP'nin tamamen etkisiz hale getirilmesi, dosya
yazma, veritabanı erişiminin kısıtlanması demek değildir. Bunlar sağlanırsa
güvenli bir işlem ortamı oluşmuş olabilir ancak PHP özellikleri kaybolmuş
olur.
Sık yapılan bir güvenlik hatası Apache'yi root kullanıcısının aidiyetinde
çalıştırmak veya Apache'nin yeteneklerini başka yollarla arttırmaktır.
Apache kullanıcısının yetkilerini root seviyesine yükseltmek, oldukça
tehlikeli olup sistemin tamamını tehlikeye atmak demektir. Dolayısıyla,
güvenlik profesyoneli olmayanların sudo veya chroot yapmayı ya da
Apache'yi root olarak başka bir şekilde çalıştırmayı düşünmemesi gerekir.
PHP bazı basit çözümler içermektedir. Örneğin, open_basedir kullanarak PHP tarafından
kullanımına izin verilen dizinlere erişimi denetleyebilir ve
kısıtlayabilirsiniz. Ayrıca, sadece Apache'nin erişimine açık bölgeler
tanımlayabilir, kullanıcılara ve sisteme ait dosyalara erişimi
kısıtlayabilirsiniz.