PHP Açığı ve Saldırısı Nedir? En Yaygın Güvenlik Zafiyetleri ve Korunma Yolları
GİRİŞ
PHP (Hypertext Preprocessor), dünya genelindeki web sitelerinin büyük bir kısmına güç veren açık kaynaklı ve sunucu taraflı bir programlama dilidir. Yaygın kullanımı ve esnek yapısı nedeniyle siber saldırganların da en çok hedef aldığı teknolojilerden biridir. PHP açığı; bir PHP kodunda yapılan hatalı mantık, yetersiz veri doğrulama veya yanlış sunucu konfigürasyonu sonucu ortaya çıkan ve sistemin yetkisiz kişilerin erişimine açık hale gelmesine neden olan güvenlik zafiyetidir.
EN YAYGIN PHP ZAFİYETLERİ VE SALDIRI YÖNTEMLERİ
- SQL Enjeksiyonu (SQL Injection – SQLi)
PHP kodunda kullanıcıdan alınan verilerin filtrelemeden doğrudan veritabanı sorgusuna dahil edilmesi sonucu oluşur.
- Saldırı Mantığı: Saldırgan, giriş formuna veya URL parametresine manipülatif SQL kodları ekleyerek veritabanından yetkisiz veri çeker, verileri siler veya değiştirebilir.
- Uzaktan Dosya Çağırma (Remote File Inclusion – RFI) ve Yerel Dosya Çağırma (Local File Inclusion – LFI)
PHP’deki ‘include’, ‘require’ gibi dosya çağırma fonksiyonlarının güvensiz kullanımı sonucu ortaya çıkar.
- Saldırı Mantığı: LFI açığında saldırgan sunucudaki hassas dosyaları (örneğin ‘/etc/passwd’) okuyabilir. RFI açığında ise harici bir sunucudan zararlı bir PHP betiğini (shell) sisteme dahil ederek sunucuda tam yetki elde edebilir.
- Komut Çalıştırma (Command Injection)
‘exec()’, ‘system()’, ‘passthru()’ gibi PHP fonksiyonlarının yetersiz girdi kontrolüyle kullanılmasıyla tetiklenir.
- Saldırı Mantığı: Saldırgan, web uygulaması üzerinden doğrudan sunucu işletim sisteminde komut çalıştırarak sunucuyu ele geçirebilir.
- Siteler Arası Betik Çalıştırma (Cross-Site Scripting – XSS)
Kullanıcıdan alınan verilerin ekrana bastırılmadan önce sanitize edilmemesi sonucu oluşur.
- Saldırı Mantığı: Saldırgan, siteye zararlı JavaScript kodları enjekte ederek diğer kullanıcıların oturum bilgilerini (cookie/session) çalabilir.
- Güvensiz Dosya Yükleme (Unrestricted File Upload)
Kullanıcıların profil fotoğrafı veya belge yüklemesine izin veren formlarda dosya uzantısı ve içerik kontrolünün yapılmaması durumudur.
- Saldırı Mantığı: Saldırgan, resim yerine bir ‘.php’ uzantılı zararlı yazılım (Web Shell) yükler ve bu dosyayı çalıştırarak sunucunun idaresini kontrol eder.
PHP SALDIRILARINDAN KORUNMA VE GÜVENLİK STRATEJİLERİ
- Veri Doğrulama ve Filtreleme (Sanitization & Validation)
Kullanıcıdan gelen hiçbir veriye (GET, POST, COOKIE) güvenilmemelidir. ‘filter_var()’ fonksiyonları ve düzenli ifadeler (Regex) ile girdiler temizlenmelidir. - Hazırlıklı Sorgular (Prepared Statements) Kullanımı
SQLi saldırılarını önlemek için ham SQL sorguları yerine mutlaka PDO veya MySQLi kütüphanelerinin sunduğu ‘Prepared Statements’ yapısı tercih edilmelidir. - Güvenli Dosya Yükleme Kontrolleri
Yüklenen dosyaların sadece uzantısına bakılmamalı, MIME türü kontrol edilmeli, dosya ismi yeniden adlandırılmalı ve yükleme dizinindeki PHP çalıştırma yetkisi (php execution) engellenmelidir. - php.ini Konfigürasyonu
Sunucudaki PHP ayarlarından hassas ve tehlikeli fonksiyonlar kısıtlanmalıdır:
- ‘allow_url_fopen’ ve ‘allow_url_include’ seçenekleri kapatılmalıdır (Off).
- ‘disable_functions’ parametresi ile ‘exec’, ‘system’, ‘passthru’, ‘shell_exec’ gibi riskli fonksiyonlar pasifleştirilmelidir.
- Hata mesajları canlı ortamda gizlenmeli (‘display_errors = Off’), hatalar sadece log dosyalarına yazdırılmalıdır.
SONUÇ
PHP dili kendi başına güvensiz değildir; uygulamayı güvensiz yapan geliştirme süreçlerindeki dikkatsizlikler ve eksik güvenlik önlemleridir. Doğru kodlama standartları, düzenli güvenlik taramaları ve güncel yazılım sürümleri kullanımı sayesinde PHP tabanlı sistemleri siber saldırılara karşı son derece güvenli hale getirmek mümkündür.
<meta name="google-adsense-account" content="ca-pub-7131159815041379">
