Yazılım

PHP 8.1 ile sağlam uygulama mimarisi kurmanın 7 kuralı

Küçük başlayan bir PHP projesini yıllarca güvenle geliştirebilmek için klasör düzeninden güvenlik sınırlarına kadar dikkat edilmesi gereken temel kararlar.

Ekranında yazılım kodları görünen dizüstü bilgisayar
Fotoğraf: Christopher Gower / Unsplash

PHP ile bir uygulamayı çalışır hale getirmek kolaydır. Onu güvenli, anlaşılır ve yıllar sonra bile geliştirilebilir tutmak ise ilk günden verilen mimari kararlarla ilgilidir. Büyük framework kullanmak tek başına iyi mimari anlamına gelmez; sınırların doğru çizilmesi ve sorumlulukların açık olması gerekir.

1. Web kökünü uygulama kodundan ayırın

Tarayıcının erişebildiği alan yalnızca giriş dosyası ve gerçek public varlıklarla sınırlı olmalıdır. Yapılandırmalar, servisler, loglar ve yüklenen ham dosyalar doğrudan erişime kapatılmalıdır. Apache kullanan projelerde korunan dizinlerin .htaccess kurallarıyla engellenmesi önemli bir ikinci güvenlik katmanıdır.

2. Tek bir giriş noktası kullanın

Tüm dinamik isteklerin index.php üzerinden router'a ulaşması; kimlik doğrulama, hata yönetimi ve güvenlik başlıklarının tek bir yerde uygulanmasını sağlar. Her sayfa için bağımsız PHP dosyaları üretmek kısa vadede hızlı görünse de zamanla kontrol edilemeyen bir yapıya dönüşür.

3. Veritabanı erişimini merkezileştirin

PDO bağlantısı, hata modu ve karakter seti tek bir sınıfta tanımlanmalıdır. Sorgularda hazırlanan ifadeler kullanılmalı, kullanıcı girdisi hiçbir zaman doğrudan SQL metnine eklenmemelidir.

4. Controller'ları ince tutun

Controller isteği almalı, doğru servisi çağırmalı ve yanıtı döndürmelidir. İş kuralları servislerde; veri sorguları repository katmanında bulunmalıdır. Bu ayrım hem test etmeyi hem de hatanın kaynağını bulmayı kolaylaştırır.

5. Varsayılan olarak güvenli davranın

  • Çıktıları HTML bağlamına uygun biçimde escape edin.
  • Her veri değiştiren formda CSRF kontrolü yapın.
  • Şifreleri PASSWORD_DEFAULT ile hashleyin.
  • Oturum kimliğini giriş sonrasında yenileyin.
  • Production ortamında ayrıntılı hataları kullanıcıya göstermeyin.

6. Yapılandırmayı koddan çıkarın

Veritabanı parolası, API anahtarı ve ortam ayarları kaynak kodda bulunmamalıdır. .env dosyası web erişimine kapatılmalı ve hiçbir zaman dağıtım paketinde gerçek değerlerle gönderilmemelidir.

7. Küçük ama net sözleşmeler oluşturun

Bir servis ne alıyor, ne döndürüyor ve hangi durumda hata üretiyor? Bu soruların cevabı tip bildirimleri ve açık veri yapılarıyla görünür olmalıdır. PHP 8.1'in strict_types, union type ve readonly gibi özellikleri bu noktada güçlü bir temel sunar.

İyi mimari, gelecekte ihtiyaç duyulabilecek her şeyi bugünden inşa etmek değildir. Bugünkü sorumlulukları doğru ayırmak ve yarın değişecek parçaların sınırlarını belirlemektir.

TOPLULUK

Yorumlar

Düşünceni paylaş; tüm yorumlar yayınlanmadan önce moderasyondan geçer.

0 yayınlanmış yorum
İlk yorumu sen yazabilirsin.