WordPress güvenliği
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
-
Ç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.
-
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.
-
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.
-
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.
Belirtiler: WordPress sitenizde sorun olabilir
- Kullanıcılar ekranında tanımadığınız yönetici hesapları.
- Kurmadığınız eklentiler ya da
wp-contentaltında tanımadığınız klasörler. wp-content/uploadsiçinde.phpdosyaları.- Ç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.phpdosyası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_DEBUGkapalı 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.phpdaha kısıtlı. 777 kullanmayın. - Dizin listelemeyi kapatın (
Options -Indexes). - Kurulumdan kalan
readme.htmlgibi 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.bakgibi 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çinwp_kses_post(). - CSRF: Formlarda
wp_nonce_field(), işlerkencheck_admin_referer()ya dawp_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,/eskigibi 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-contentiç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.phpdosyası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_EDITveFORCE_SSL_ADMINtanımlı; hata gösterimi kapalı.wp-config.phpizinleri kısıtlı ve dışarıdan erişilemiyor.wp-content/uploadsiç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