PHP’nin güvenlik yapılandırma ayarları, web uygulamalarının güvenliğini sağlamak için kritik öneme sahiptir. Bu ayarların doğru bir şekilde yapılandırılması, potansiyel saldırılara karşı koruma sağlamak ve kullanıcı verilerinin güvenliğini artırmak amacıyla önemlidir. Aşağıda, PHP 7.4 sürümünde önemli güvenlik yapılandırma ayarları ve açıklamaları yer almaktadır.
expose_php
`expose_php` ayarı, PHP sürüm bilgilerini yayma işlevini kontrol eder. Bu ayarın true olarak ayarlanması, PHP’nin yanıt başlıklarında sürüm numarasını belirtmesine neden olur. Saldırganların, uygulamanın hangi PHP sürümünü kullandığını öğrenmesi, bilinen güvenlik açıklarını hedef almasına olanak tanır. Bu nedenle, `expose_php` ayarının false olarak ayarlanması önerilmektedir.
“`ini
expose_php = Off
“`
display_errors
`display_errors` ayarı, hata mesajlarını kullanıcıya gösterip göstermeyeceğini belirler. Eğer bu ayar true olarak ayarlanırsa, hata mesajları tarayıcıda gösterilir. Bu durum, kötü niyetli kullanıcıların sunucunun iç yapısını anlamasına yardımcı olabilir. Prodüksiyon ortamlarında `display_errors` ayarının false olarak belirlenmesi önerilir, böylece hata mesajları kullanıcıya yansıtılmaz ve bilgilere doğrudan erişim engellenir.
“`ini
display_errors = Off
“`
allow_url_fopen
`allow_url_fopen` ayarı, PHP’nin URL üzerinden dosya okuma işlevini kontrol eder. Bu ayar true olarak ayarlandığında, PHP’nin `fopen()`, `file_get_contents()` gibi fonksiyonlarla URL’ler üzerinden dosya almasına izin verir. Ancak, bu durum kötü niyetli kullanıcıların zararlı dosyaları içeri aktarabilmesine yol açabilir. Güvenlik açısından bu ayarın false olarak ayarlanması önerilmektedir.
“`ini
allow_url_fopen = Off
“`
safe_mode
`safemode`, PHP’nin eski sürümlerinde mevcut olan bir güvenlik özelliğidir. Safe mode, PHP betiklerinin, yalnızca belirli dosya ve dizinlerde işlem yapmasına izin vererek bazı güvenlik sağlama amaçlarını hedeflemiştir. Ancak, bu özellik PHP 5.4 itibarıyla kaldırıldığı için PHP 7.4’te bulunmamaktadır. Bu nedenle, `safe_mode` ayarının varlığına dair bir endişe olmamakla birlikte, genel güvenlik uygulamalarına odaklanmak gerekmektedir.
disable_functions
`disable_functions` ayarı, belirli PHP fonksiyonlarının kullanımını devre dışı bırakmak için kullanılır. Bu fonksiyonlar, potansiyel olarak zararlı işlemleri gerçekleştirebilir. Örneğin, shell_exec, exec, system gibi fonksiyonlar, sistem üzerinde komut çalıştırmak için kullanılabilir ve saldırganlar tarafından kötüye kullanılabilir. Bu nedenle, bu tür fonksiyonların devre dışı bırakılması tavsiye edilir.
“`ini
disable_functions = shell_exec, exec, system
“`
session.cookie_secure
`session.cookie_secure` ayarı, oturum çerezlerinin yalnızca HTTPS bağlantıları üzerinden gönderilip gönderilmeyeceğini belirler. Bu ayarın true olarak ayarlanması, çerezlerin güvenli bir bağlantı üzerinden iletilmesini sağlayarak, MITM (Man-in-the-Middle) saldırılarına karşı koruma sağlar. HTTPS kullanımı zorunlu kılındığında bu ayarın etkinleştirilmesi önerilmektedir.
“`ini
session.cookie_secure = On
“`
session.cookie_httponly
`session.cookie_httponly` ayarı, çerezlerin yalnızca HTTP protokolü üzerinden erişilebilir olmasını sağlar. Bu, JavaScript gibi istemci tarafı betiklerinin çerezlere erişimini engelleyerek XSS (Cross-Site Scripting) saldırılarına karşı ek bir koruma katmanı sunar. Bu ayarın true olarak ayarlanması önerilmektedir.
“`ini
session.cookie_httponly = On
“`
open_basedir
`open_basedir` ayarı, PHP betiklerinin erişebileceği dosya yollarını kısıtlar. Bu özellik, uygulamanın yalnızca belirli dizinlere erişmesini sağlayarak güvenliği artırır. Bu ayar yönetimi, potansiyel kötü niyetli dosya erişimlerine karşı koruma sağlamaktadır. Örneğin, şu şekilde ayarlanabilir:
“`ini
open_basedir = /var/www/html
“`
error_reporting
`error_reporting` ayarı, hangi hata türlerinin raporlanacağını belirler. Üretim ortamında sadece kritik hataların bildirilmesi gerektiğinden, bu ayar doğru bir şekilde konfigüre edilmelidir. Tüm hata raporlarının açık olduğu bir geliştirme ortamında ise daha geniş bir hata seti gözlemlenebilir. Güvenlik açısından önemli olan, gereksiz bilgi sızıntısının önlenmesidir.
“`ini
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING
“`
Conclusion
PHP 7.4’te güvenliği artırmak için zamanında ve doğru yapılandırmalar yapmak önemlidir. Yukarıda belirtilen ayarların hepsi, PHP uygulamalarının güvenliğini artırmak amacıyla dikkatle değerlendirilmelidir. Bu ayarların uygun bir şekilde yapılandırılması, uygulama güvenliğini artırarak, potansiyel saldırıların etkilerini azaltabilir. Her bir proje için güvenlik yapılandırması, uygulamanın gereksinimlerine göre özelleştirilmeli ve güncellemelerle sürekli denetlenmelidir.


