WordPress SQL Enjeksiyon Saldırıları Nasıl Önlenir?

SQL enjeksiyon saldırıları, kötü niyetli kişilerin web sitenizin veritabanına izinsiz erişim sağlamak veya verileri manipüle etmek için kullandığı kritik bir güvenlik açığıdır. WordPress, dünya çapında en yaygın kullanılan içerik yönetim sistemlerinden (CMS) biri olduğu için bu tür saldırıların hedefi haline gelebilir. Bu makalede, WordPress sitenizi SQL enjeksiyon saldırılarına karşı korumanın en etkili yöntemlerini adım adım ele alacağız.

1. WordPress Çekirdek, Temalar ve Eklentileri Güncel Tutun

SQL enjeksiyon açıkları genellikle eski sürümlerdeki güvenlik zafiyetlerinden kaynaklanır.

  • WordPress Çekirdek: Yönetici panelinden (Dashboard > Updates) en son sürüme güncelleyin.
  • Tema ve Eklentiler: Kullanmadığınız eklentileri silin, aktif olanları düzenli olarak güncelleyin.
  • Resmi Kaynaklar: Sadece WordPress.org veya güvenilir sağlayıcılardan tema/eklenti yükleyin.

2. Kullanıcı Girdilerini Doğrulayın ve Temizleyin (Validation & Sanitization)

SQL enjeksiyon, genellikle formlar, arama çubukları veya URL parametreleri gibi kullanıcı girdileri üzerinden gerçekleşir.

  • Sanitization: Veriyi veritabanına kaydetmeden önce temizleyin. WordPress fonksiyonlarını kullanın:
  $clean_input = sanitize_text_field($_POST['input']);
  • Validation: Verinin beklenen formatta olduğunu kontrol edin (örn. e-posta, sayı).
  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      // Hata mesajı göster
  }

3. Veritabanı Sorgularında Hazırlanmış İfadeler (Prepared Statements) Kullanın

Doğrudan kullanıcı girdisiyle SQL sorgusu oluşturmak risklidir. Bunun yerine, WordPress’in $wpdb sınıfı ile hazırlanmış ifadeler kullanın:

global $wpdb;
$query = $wpdb->prepare(
    "SELECT * FROM {$wpdb->prefix}users WHERE user_email = %s",
    $email
);
$results = $wpdb->get_results($query);

%s (string), %d (integer) gibi yer tutucular, girdiyi otomatik olarak temizler.

4. Güvenlik Eklentileriyle Koruma Sağlayın

  • Wordfence Security: Firewall özelliğiyle SQL enjeksiyon dahil saldırıları engeller.
  • Sucuri Security: Kötü amaçlı sorguları tespit eder ve bloklar.
  • iThemes Security: Veritabanı koruma modu sunar.

5. Kullanıcı İzinlerini Sınırlandırın

  • Yönetici Erişimi: Sadece güvenilir kullanıcılara yönetici rolü verin.
  • Editör/Yazar Rolleri: Yetkisiz veritabanı erişimini engellemek için yetkileri kısıtlayın.
  • Members Plugin: Kullanıcı rollerini özelleştirmek için kullanılabilir.

6. .htaccess ile Güvenlik Kuralları Ekleyin

Sunucu seviyesinde SQL enjeksiyon saldırılarını engellemek için .htaccess dosyanıza aşağıdaki kuralları ekleyin:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} (;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{QUERY_STRING} (\*|union|select|insert|update|delete|drop|alter|truncate) [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>

7. Veritabanı Önekini Değiştirin

WordPress kurulumu sırasında varsayılan wp_ önekini özelleştirin (örn: myprefix_). Bu, saldırganların tablo isimlerini tahmin etmesini zorlaştırır.

8. WAF (Web Application Firewall) Kullanın

  • Cloudflare: SQLi kuralları içeren ücretsiz WAF sunar.
  • Sucuri Firewall: Uygulama katmanında saldırıları filtreler.

9. Düzenli Yedek Alın ve Güvenlik Taraması Yapın

  • UpdraftPlus: Otomatik yedekler oluşturun.
  • MalCare: Veritabanında şüpheli aktiviteleri tarar.

10. Logları İzleyin ve Saldırıları Tespit Edin

  • Activity Log: Kullanıcı hareketlerini kaydeder.
  • WP Security Audit Log: Veritabanı değişikliklerini izler.

Sonuç: Çok Katmanlı Bir Güvenlik Stratejisi Oluşturun

SQL enjeksiyon saldırılarına karşı tek bir çözüm yeterli değildir. Güncellemeler, hazırlanmış sorgular, WAF, ve düzenli kontroller gibi birden fazla katmanla sitenizi koruyun. Ayrıca, geliştiricilerinize güvenli kodlama eğitimi vererek uzun vadeli bir güvenlik kültürü oluşturun.

Unutmayın: Bir saldırıya uğradığınızda, hemen yedekten geri yükleme yapın, tüm şifreleri değiştirin ve profesyonel bir güvenlik firmasından destek alın.

Paylaş arkadaşlarında görsün
Osman Bayrak

Osman Bayrak

Yazılım mühendisi, SEO içerik yazarı, web tasarımcı...

Articles: 35