Saldırıların çoğu size özel değildir. İnternette gezinen otomatik tarayıcılar bilinen açıkları arar, bulduğu yerde durur. Aşağıdaki 12 senaryo, paylaşımlı hosting üzerinde çalışan PHP sitelerinde en sık görülen türlerdir. Her biri için ne olduğunu, hangi belirtiden anlaşıldığını ve bugün uygulayabileceğiniz savunmayı yazdık.

Girdiye güvenmekten doğan saldırılar

1. SQL enjeksiyonu

Kullanıcıdan gelen değer doğrudan sorgu metnine yapıştırıldığında saldırgan sorgunun anlamını değiştirir; tek bir arama kutusu tüm müşteri tablosunu dışarı taşıyabilir. Savunma tek cümledir: hazırlanmış ifadeler kullanın ve değeri asla sorguya string olarak eklemeyin. Sıralama alanı gibi parametreleştirilemeyen yerlerde beyaz liste yapın: gelen değer listede yoksa varsayılana düşsün.

2. XSS (siteler arası betik çalıştırma)

Yorum, ürün sorusu ya da destek talebine yazılan betik, başka bir kullanıcının tarayıcısında çalışır. En pahalı hali, yöneticinin panelde o içeriği açması ve oturumunun ele geçirilmesidir. Savunma: veriyi ekrana basarken kaçış uygulayın, HTML kabul etmeniz gereken alanlarda kendi yazdığınız regex yerine gerçek bir HTML temizleyici kullanın ve içerik güvenlik politikası başlığıyla dışarıdan betik yüklenmesini kısıtlayın.

3. CSRF (istek sahteciliği)

Giriş yapmış yöneticiye başka bir sekmede hazırlanmış bir sayfa açtırılır, tarayıcı çerezi otomatik gönderdiği için sizin adınıza kayıt silinir ya da yeni yönetici eklenir. Savunma: durum değiştiren her POST işleminde tek kullanımlık token doğrulayın, oturum çerezine SameSite=Lax (form başka alan adından gönderilmiyorsa Strict) verin, yönetici ekleme veya toplu silme gibi kritik işlemlerde parola tekrarı isteyin.

Dosya ve yol üzerinden gelenler

4. Zararlı dosya yükleme ve uzaktan kod çalıştırma

Ürün görseli yükleme alanına .php uzantılı bir dosya sızarsa sitenin tamamı saldırganın olur. Uzantı kontrolü yeterli değildir; dosya adı sunucuda yeniden üretilmeli, izin verilen uzantılar beyaz liste olmalı, yükleme klasöründe PHP çalıştırma sunucu ayarıyla tamamen kapatılmalıdır. Mümkünse yüklenen dosyaları web kökü dışında tutup bir okuyucu betikle sunun.

5. Dizin geçişi ve yerel dosya dahil etme

Sayfa adresindeki bir parametre doğrudan dosya yoluna dönüşüyorsa, saldırgan üst dizinlere tırmanarak yapılandırma dosyanızı okuyabilir. Kullanıcıdan gelen değeri asla dosya yolu olarak kullanmayın; sabit bir eşleme tablosu tutun ve gelen anahtar tabloda yoksa isteği reddedin.

Kimlik ve yetki saldırıları

6. Kaba kuvvet ve çalıntı parola denemesi

Botlar başka sitelerden sızmış e-posta ve parola çiftlerini sizde dener. Erişim kayıtlarında giriş adresine gelen POST isteklerini günlük sayın; başarısız oranı %50'yi aşıyorsa hedeftesiniz. Savunma: hesap başına 15 dakikada 5 deneme, IP başına saatte 30 deneme sınırı; art arda başarısız denemede artan gecikme; üçüncü denemeden sonra doğrulama adımı; yöneticiler için zorunlu iki adımlı doğrulama.

7. Oturum çalma ve oturum sabitleme

Çerez HTTPS dışında taşınırsa ya da giriş sonrası oturum kimliği yenilenmezse, saldırgan mevcut oturumu devralabilir. Savunma: çerezlere Secure ve HttpOnly, girişten hemen sonra oturum kimliğini yenileme, işlem yapılmayan yönetici oturumlarının 30 dakikada kapanması, parola veya yetki değişikliğinde o kullanıcının tüm oturumlarının geçersiz kılınması.

8. Yetki atlatma ve IDOR

Adres satırındaki sipariş numarasını bir artırınca başka müşterinin faturasını görüyorsanız, açık burada. Bu tür bir hata otomatik tarayıcılarla değil, elle keşfedilir ve genelde çok geç fark edilir. Savunma: her sorguda kaydın sahibini de koşula ekleyin, yetki kontrolünü ekranı çizen katmanda değil veriyi getiren katmanda yapın, çok kullanıcılı panellerde her rol için bir test hesabıyla düzenli deneme yapın.

Sunucuyu ve altyapıyı hedefleyenler

9. SSRF (sunucuyu vekil olarak kullanma)

Uzaktaki bir görseli indiren ya da adres doğrulayan her özellik risklidir: saldırgan sunucunuza yerel ağ adreslerini çağırtabilir. Savunma: gelen adresi çözümleyip özel IP aralıklarını reddedin, yalnızca http ve https şemalarına izin verin, yönlendirmeleri takip etmeyin veya her adımda kontrolü tekrarlayın.

10. Uygulama katmanı flood ve DDoS

Saniyede birkaç yüz istek, paylaşımlı bir sunucuda arama sayfanızı hedeflerse site kendi kendine kapanır. Savunma katmanlıdır: arama ve filtre sayfalarına önbellek, IP başına istek sınırı, bilinen kötü niyetli ağların engellenmesi ve ağır sorguların bir kuyruğa alınması. Ayrıca PHP süreç havuzunuza bellek sınırı koymak, tek bir sitenin sunucuyu birlikte götürmesini engeller.

Dolaylı yollar

11. Tedarik zinciri: eklenti, tema ve kütüphane

Kendi kodunuz kusursuz olsa bile, yıllardır güncellenmeyen bir galeri eklentisi kapıyı açar. Kullanmadığınız her eklentiyi silin, kullandıklarınızın sürümünü ayda bir kontrol edin, son sürümü bir yıldan eskiyse o bileşeni ya değiştirin ya da kendi basit kodunuzla yeniden yazın.

12. Alan adınız adına sahte e-posta

SPF, DKIM ve DMARC kayıtları eksikse, herkes sizin alan adınızdan fatura e-postası gönderebilir. Bu bir sunucu açığı değildir ama itibar kaybı en hızlı buradan gelir. Üç kaydı da tanımlayın; DMARC'ı p=none ile başlatıp 2-4 hafta rapor okuyun, gönderen sunucularınızın hepsi doğrulanır hale gelince p=quarantine, ardından p=reject yapın.

Hangisi ne kadar acil?

SaldırıTipik belirtiEn ucuz savunma
SQL enjeksiyonuLoglarda tırnak ve UNION içeren isteklerHazırlanmış ifadeler
Dosya yüklemeYükleme klasöründe beklenmedik uzantıKlasörde PHP çalıştırmayı kapatmak
Kaba kuvvetGiriş sayfasında yoğun başarısız denemeHız sınırı ve 2FA
IDORŞikâyet gelene kadar belirti yokSorguya sahiplik koşulu
Eski eklentiAniden ortaya çıkan yeni dosyalarKullanılmayanı silmek

Haftalık on dakikalık kontrol listesi

  • Yükleme klasöründe son 7 günde oluşan dosyaları listeleyin (find uploads -type f -mtime -7); listede görsel dışında bir şey varsa inceleyin.
  • Yönetici hesaplarını sayın. Tanımadığınız bir hesap varsa hemen kapatın.
  • Başarısız giriş denemesi sayısını geçen haftayla karşılaştırın; iki katına çıkmışsa tarama altındasınız.
  • Yedeğin bugün alındığını ve geri yüklenebildiğini doğrulayın. Test edilmemiş yedek yedek değildir.
  • Sunucu ve uygulama bileşenlerinde bekleyen güvenlik güncellemesi var mı bakın.
  • Arama motoru araçlarında güvenlik uyarısı olup olmadığını kontrol edin.

Sık yapılan hatalar

  • Güvenliği yalnızca bir eklentiye devredip kodu hiç gözden geçirmemek.
  • Yönetici paneline aynı parolayı yıllarca kullanmak ve parolayı ekiple paylaşmak.
  • Hata mesajlarını canlıda ekrana basmak; veritabanı yolu ve sürüm bilgisi saldırgana yol gösterir.
  • Yedekleri sitenin kendi sunucusunda ve web kökünde tutmak.
  • Test hesaplarını yayına alırken silmemek.

Özet

  1. Girdi doğrulama ve hazırlanmış ifadeler, tek başına saldırıların büyük bölümünü keser.
  2. Yükleme klasöründe kod çalıştırmayı kapatın; bu tek ayar en pahalı senaryoyu ortadan kaldırır.
  3. Yetki kontrolünü veriyi çeken katmana taşıyın, ekranı gizlemek yetki değildir.
  4. Kullanmadığınız her bileşeni silin, kalanları takvimle güncelleyin.
  5. Yedeği düzenli alın ve ayda bir gerçekten geri yükleyerek deneyin.