Süreçlerinize uygun yazılımı birlikte planlayalım. Demo ve teklif için arayın: +90 546 737 48 29

TR EN DE

WordPress güvenliği

Web Sitesi Güvenliği · Hazırlayan: BYK Yazılım Destek Ekibi · Güncelleme: 04.10.2026

WordPress, dünyada en yaygın kullanılan içerik yönetim sistemidir. Bu yaygınlık onu otomatik saldırıların da başlıca hedefi yapar: bir eklentide açık duyurulduğunda, o eklentiyi kullanan siteler kısa sürede taranmaya başlar. WordPress çekirdeği düzenli güvenlik güncellemeleri alır; ele geçirilen sitelerde neden çoğunlukla çekirdek değil, güncellenmemiş eklenti ve temalar, zayıf parolalar ve lisanssız dağıtılan kopyalardır.

Bu rehber, bir WordPress sitesini korumak için yapılması gerekenleri öncelik sırasıyla anlatır. Genel ilkeler için Web sitesi güvenliği rehberi ile birlikte okuyun.

Ayar ve menü adları WordPress sürümüne göre değişebilir. Yapılandırma dosyalarını değiştirmeden önce yedek alın.

Önce bunlar

  1. Çekirdeği, eklentileri ve temaları güncel tutun

    Yönetim panelindeki Güncellemeler ekranını düzenli kontrol edin. Çekirdeğin küçük sürüm ve güvenlik güncellemeleri varsayılan olarak otomatik kurulur; bu ayarı kapatmayın. Eklenti ve temalar için otomatik güncellemeyi, eklentiler ve temalar ekranından tek tek açabilirsiniz. Büyük sürüm geçişlerinden önce yedek alın.

    Şema: WordPress katmanları; çekirdek, eklentiler, temalar, wp-config, yüklemeler klasörü ve her birinin koruması
  2. Az, güvenilir ve bakımı süren eklenti

    Her eklenti sitenizde tam yetkiyle çalışan ek koddur. Kullanmadıklarınızı devre dışı bırakmakla yetinmeyin, silin. Yeni eklenti seçerken resmî eklenti dizinindeki son güncelleme tarihine, WordPress'in güncel sürümüyle denenip denenmediğine ve destek sorularına verilen yanıtlara bakın. Ücretli eklenti ve temaların "ücretsiz" dağıtılan (nulled) kopyalarını asla kurmayın; bu dosyalar arka kapı içerme olasılığı en yüksek kaynaklardır.

    Kontrol listesi: eklenti seçimi; resmî dizin, son güncelleme, uyumluluk, gerçekten gerekli mi, lisanssız kopya yok
  3. Yönetici hesaplarını sıkılaştırın

    • Yönetici sayısını en aza indirin; içerik girenlere Editör ya da Yazar rolü yeterlidir.
    • Kullanıcı adı olarak "admin" gibi tahmin edilebilir adlar kullanmayın.
    • Her yönetici için uzun, benzersiz parola ve iki adımlı doğrulama kullanın. Bkz. İki adımlı doğrulama.
    • Kullanıcılar ekranını düzenli gözden geçirin; tanımadığınız yönetici hesabı ele geçirilme işaretidir.
    • Ajans ya da geliştiriciye verdiğiniz hesabı iş bitince kapatın ya da rolünü düşürün.
    Karşılaştırma: admin kullanıcı adı, ortak hesap ve çok sayıda yönetici yanlış; kişiye özel hesap, en az yetki ve iki adımlı doğrulama doğru
  4. Giriş denemelerini sınırlayın

    WordPress varsayılan olarak hatalı giriş denemelerini sınırlamaz. Deneme sınırı getiren bakımı süren bir eklenti, barındırma firmanızın sunduğu koruma ya da bir WAF kuralı ile giriş sayfasına yapılan otomatik denemeleri kısıtlayın. Yönetim paneline yalnızca belirli yerlerden giriliyorsa, giriş sayfasını sunucu düzeyinde IP ile ya da ek bir parola katmanıyla sınırlamak da etkilidir.

    Şema: WordPress giriş koruması katmanları; deneme sınırı, iki adımlı doğrulama, IP kısıtı ya da ek parola, XML-RPC kısıtı

Belirtiler: WordPress sitenizde sorun olabilir

  • Kullanıcılar ekranında tanımadığınız yönetici hesapları.
  • Kurmadığınız eklentiler ya da wp-content altında tanımadığınız klasörler.
  • wp-content/uploads içinde .php dosyaları.
  • Çekirdek dosyalarında (wp-includes, wp-admin) güncelleme yapmadığınız tarihlerde değişiklik.
  • Ziyaretçilerin başka sitelere yönlendirilmesi; yazılara eklenmiş yabancı bağlantılar.
  • Arama sonuçlarında sitenizin adıyla ilgisiz başlıklar; Search Console'da güvenlik uyarısı.
  • Giriş sayfasına ve xmlrpc.php dosyasına erişim günlüğünde çok yoğun POST istekleri.

Araçlar menüsündeki Site Sağlığı ekranı, güncellik ve yapılandırmayla ilgili temel sorunları listeler. Ele geçirilme şüphesinde Siteniz hacklendiyse ne yapmalısınız? rehberini izleyin.

wp-config.php koruması

wp-config.php, veritabanı parolasını ve güvenlik anahtarlarını içerir. Birkaç sabit, güvenliği doğrudan artırır:

<?php
// wp-config.php içinde, "That's all, stop editing!" satırından ÖNCE

// Paneldeki tema/eklenti dosya düzenleyicisini kapat
define('DISALLOW_FILE_EDIT', true);

// Giriş ve yönetim paneli yalnız HTTPS
define('FORCE_SSL_ADMIN', true);

// Canlı sitede hatalar ekrana basılmaz
define('WP_DEBUG', false);
// Sorun giderirken: ekrana değil günlüğe yazdırın
// define('WP_DEBUG', true);
// define('WP_DEBUG_LOG', true);
// define('WP_DEBUG_DISPLAY', false);
  • DISALLOW_FILE_EDIT: Yönetim panelindeki tema ve eklenti dosya düzenleyicisini kapatır. Bir yönetici hesabı ele geçirildiğinde panelden doğrudan kod eklenmesini engeller.
  • FORCE_SSL_ADMIN: Giriş ve yönetim panelinin yalnızca HTTPS üzerinden çalışmasını sağlar.
  • Hata gösterimi: Canlı sitede WP_DEBUG kapalı olmalı ya da hatalar ekrana değil günlüğe yazılmalıdır.
  • Güvenlik anahtarları: Dosyadaki anahtar ve tuz değerleri benzersiz olmalıdır. Bir ele geçirilmeden sonra bunları yenilemek tüm açık oturumları sonlandırır.

Dosyanın izinlerini kısıtlayın (640 ya da 600; barındırma ortamınıza göre) ve dışarıdan erişimi engelleyin. WordPress, wp-config.php dosyasının kurulum klasörünün bir üst dizinine taşınmasını da destekler; web kökünün dışına almak ek bir korumadır.

# Web kökündeki .htaccess: wp-config.php dosyasına dışarıdan erişimi engelle
<Files "wp-config.php">
    Require all denied
</Files>

Yüklemeler klasöründe PHP çalıştırmayı kapatın

wp-content/uploads klasöründe yalnızca görsel ve belge bulunur; PHP dosyası çalışması için hiçbir neden yoktur. Klasöre aşağıdaki .htaccess dosyasını ekleyin.

# wp-content/uploads/.htaccess
<FilesMatch "(?i)\.(php[0-9]?|phtml|phar|pht)$">
    Require all denied
</FilesMatch>

Kuralı ekledikten sonra medya dosyalarının normal açıldığını kontrol edin. Ayrıntılar için Dosya yükleme güvenliği ve web shell rehberine bakın.

XML-RPC

xmlrpc.php, WordPress'e uzaktan bağlanan uygulamalar için eski bir arayüzdür. Parola denemeleri için de kullanılabildiğinden, ihtiyacınız yoksa kapatmak iyi bir seçenektir.

# Web kökündeki .htaccess: XML-RPC kullanılmıyorsa kapat
<Files "xmlrpc.php">
    Require all denied
</Files>

Kapatmadan önce kontrol edin: WordPress mobil uygulaması, bazı eklentiler (ör. Jetpack) ve uzaktan yayın araçları XML-RPC kullanır. Bunlardan birini kullanıyorsanız dosyayı tümüyle kapatmak yerine giriş deneme sınırının XML-RPC isteklerini de kapsadığından emin olun.

Dosya izinleri ve sunucu ayarları

  • Dosyalar 644, klasörler 755; wp-config.php daha kısıtlı. 777 kullanmayın.
  • Dizin listelemeyi kapatın (Options -Indexes).
  • Kurulumdan kalan readme.html gibi sürüm bilgisi veren dosyalar ve kullanılmayan varsayılan temalar kaldırılabilir; en az bir varsayılan temayı yedek olarak tutmak sorun gidermede işe yarar.
  • Web kökünde yedek arşivi, veritabanı dökümü ya da wp-config.php.bak gibi kopyalar bırakmayın.
  • Düz FTP yerine SFTP ya da FTPS kullanın.

Ayrıntılar: Sunucu ve barındırma güvenliği ve Güvenlik başlıkları ve HTTPS.

Tema ve eklenti geliştiriyorsanız

WordPress, güvenli kod yazmak için hazır işlevler sunar; kendi çözümünüzü yazmak yerine bunları kullanın.

<?php
// Sorgu: hazır ifade
$satirlar = $wpdb->get_results(
    $wpdb->prepare("SELECT ID, post_title FROM {$wpdb->posts} WHERE post_author = %d AND post_status = %s", $yazarId, 'publish')
);

// Çıktı: bağlama göre kaçışlama
echo '<h2>' . esc_html($baslik) . '</h2>';
echo '<a href="' . esc_url($adres) . '" title="' . esc_attr($ipucu) . '">' . esc_html($metin) . '</a>';

// Form işleme: önce nonce, sonra yetki, sonra temizlenmiş girdi
if (isset($_POST['ornek_kaydet'])) {
    check_admin_referer('ornek_ayar_kaydet');
    if (!current_user_can('manage_options')) {
        wp_die(esc_html__('Bu işlem için yetkiniz yok.', 'ornek'));
    }
    update_option('ornek_baslik', sanitize_text_field(wp_unslash($_POST['baslik'] ?? '')));
}
  • Sorgular: $wpdb->prepare() ile; değişkeni sorgu metnine birleştirmeyin.
  • Çıktı: Bağlama göre esc_html(), esc_attr(), esc_url(); izinli HTML için wp_kses_post().
  • CSRF: Formlarda wp_nonce_field(), işlerken check_admin_referer() ya da wp_verify_nonce().
  • Yetki: Her işlemde current_user_can(). Nonce doğrulaması yetki kontrolünün yerine geçmez.
  • Girdi: sanitize_text_field(), absint() gibi temizleme işlevleri.

Yedek ve izleme

WordPress sitesi iki parçadır: dosyalar (özellikle wp-content) ve veritabanı. İkisini birlikte, otomatik ve sunucu dışına yedekleyin; geri yüklemeyi en az bir kez deneyin. Çekirdek dosyalarının özgün sürümle aynı olup olmadığı, WP-CLI kullanan sunucularda wp core verify-checksums komutuyla denetlenebilir. Ayrıntılar için Web sitesi yedekleme ve izleme rehberine bakın.

Sık yapılan hatalar

  • Onlarca eklentiyle çalışmak: Her küçük ihtiyaç için ayrı eklenti kurmak hem siteyi yavaşlatır hem saldırı yüzeyini büyütür. Aynı işi yapan eklentileri teke indirin.
  • Temanın dosyalarını doğrudan değiştirmek: Güncelleme değişiklikleri sileceği için tema güncellenmez olur. Alt tema (child theme) kullanın.
  • Deneme kurulumlarını açık bırakmak: /test, /yeni, /eski gibi klasörlerdeki ikinci WordPress kurulumları güncellenmez ve ana siteyle aynı hesabı paylaşır.
  • Herkese yönetici rolü vermek: İçerik girecek kişiye Editör rolü yeterlidir.
  • Yedeği wp-content içinde tutmak: Yedekleme eklentisinin dosyaları web kökünde bırakması, yedeğin indirilebilmesi demektir. Yedekler sunucu dışına gönderilmelidir.
  • Ele geçirilen sitede yalnızca eklenti taraması yapmak: Tarama temiz çıksa da arka kapı kalmış olabilir; çekirdek ve eklenti dosyalarını temiz kopyalarla değiştirin, kullanıcıları ve wp-config.php dosyasını elle kontrol edin.
  • Kurulumdan kalan varsayılanları bırakmak: Varsayılan "admin" hesabı, örnek içerikler ve kullanılmayan temalar.

Kontrol listesi

  • Çekirdek, eklenti ve temalar güncel; güvenlik güncellemeleri otomatik.
  • Kullanılmayan eklenti ve temalar silindi; lisanssız kopya yok.
  • Yönetici sayısı az; "admin" kullanıcı adı yok; iki adımlı doğrulama açık.
  • Giriş denemeleri sınırlı.
  • DISALLOW_FILE_EDIT ve FORCE_SSL_ADMIN tanımlı; hata gösterimi kapalı.
  • wp-config.php izinleri kısıtlı ve dışarıdan erişilemiyor.
  • wp-content/uploads içinde PHP çalışmıyor.
  • XML-RPC gerekmiyorsa kapalı.
  • Dosya ve veritabanı yedeği otomatik ve sunucu dışında; geri yükleme denendi.
  • Site Sağlığı ekranında kritik uyarı yok.

Sık sorulan sorular

Güvenlik eklentisi kurmalı mıyım?

Bakımı süren bir güvenlik eklentisi; giriş sınırı, dosya değişikliği izleme ve temel sıkılaştırma için yararlı olabilir. Ancak güncelleme, güçlü parolalar ve yedeğin yerini tutmaz; birden fazla güvenlik eklentisini aynı anda kurmak da çakışmalara yol açar.

Giriş adresini (wp-login.php) değiştirmek işe yarar mı?

Otomatik denemelerin gürültüsünü azaltır ama gerçek bir koruma değildir; adres öğrenilebilir. Deneme sınırı ve iki adımlı doğrulama asıl önlemdir.

Veritabanı tablo ön ekini değiştirmek gerekir mi?

Güvenliğe katkısı sınırlıdır ve mevcut sitede değiştirmek risklidir. Önceliğiniz güncelleme, hesap güvenliği ve yedek olsun.

Devre dışı bıraktığım tema ve eklentiler sorun olur mu?

Olabilir. Dosyaları sunucuda durduğu sürece içlerindeki bir açık kullanılabilir. Kullanmıyorsanız silin.

Otomatik güncelleme sitemi bozar mı?

Küçük sürüm ve güvenlik güncellemelerinde bu nadirdir. Otomatik yedek açıksa olası bir sorunda geri dönmek kolaydır; güncellenmemiş bir sitenin ele geçirilmesi çok daha maliyetlidir.

BYK Yazılım Destek Ekibi
Bu rehber BYK Yazılım destek ekibi tarafından hazırlanır ve düzenli olarak gözden geçirilir. Son güncelleme: 04.10.2026.

İlgili rehberler

Web sitenizi birlikte gözden geçirelim

BYK Yazılım kurumsal web siteleri geliştirir. Sitenizle ilgili sorularınız için bize yazabilirsiniz.

Bize ulaşın Kurumsal web sitesi hizmetimiz