Bogahost Blog | Güncel Hosting, Sunucu ve Yazılım Rehberi
Müşteri Paneli
Blog

wp-config.php ile Güvenlik ve Performans Ayarları

WordPress'in tüm yapılandırma mantığı tek bir dosyada toplanır: kök dizindeki wp-config.php. Veritabanı kimlik bilgilerinden güvenlik anahtarlarına, önbellek davranışından hata raporlamaya kadar pek çok kritik ayar burada yaşar. Doğru elde bu dosya, hem saldırı yüzeyini daraltan hem de sayfa yükünü gözle görülür biçimde hafifleten bir kontrol paneline dönüşür.

wp-config.php Neden Bu Kadar Kritik?

Dosya, WordPress çekirdeği yüklenmeden önce işlenir. Yani burada tanımladığınız her sabit (constant), eklentiler ve tema devreye girmeden uygulanır. Bu erken yükleme sırası, dosyayı güvenlik sertleştirmesi için ideal bir nokta yapar. Aynı zamanda veritabanı şifreniz düz metin olarak burada durduğu için, dosyaya erişim sağlayan bir saldırgan pratikte sitenizin tamamına erişir.

Güvenlik Anahtarlarını ve Tuzları Yenileyin

Oturum çerezlerini imzalayan sekiz adet benzersiz anahtar (AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY ve karşılık gelen SALT değerleri), kaba kuvvet ile çerez taklidini zorlaştırır. Kurulum sırasında atanmışsa bile bunları periyodik olarak yenilemek, sızdırılan oturumları anında geçersiz kılar. Resmi üreteçten taze değerler çekebilirsiniz:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

Dönen blok doğrudan eski tanımların yerine yapıştırılır. Anahtarları değiştirdiğiniz anda tüm kullanıcılar yeniden giriş yapmak zorunda kalır; bu, bir ihlal şüphesinde ilk başvuracağınız önlemdir.

Dosya Düzenlemeyi ve Tema Editörünü Kapatın

Yönetici panelindeki tema/eklenti kod editörü, bir hesabın ele geçirilmesi durumunda saldırganın sunucuya PHP yazmasına olanak tanır. Bu yüzeyi kapatmak tek satırla mümkündür:

define( 'DISALLOW_FILE_EDIT', true );
define( 'DISALLOW_FILE_MODS', true );

DISALLOW_FILE_MODS daha katıdır; eklenti/tema kurulumunu ve güncellemesini de panelden engeller. Otomatik dağıtım yaptığınız üretim ortamlarında genellikle tercih edilir, ancak güncellemeleri WP-CLI veya sürüm kontrolüyle yönettiğinizden emin olun.

Hata Raporlamayı Üretimde Susturun

Ekrana düşen PHP uyarıları, dosya yollarını ve eklenti sürümlerini ifşa ederek bilgi sızıntısına yol açar. Geliştirmede log tutmak istersiniz, üretimde ise çıktıyı tamamen kapatıp logu dosyaya yönlendirmek doğru yaklaşımdır:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', '/var/www/logs/wp-errors.log' );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

WP_DEBUG_LOG değerine özel bir yol vermek, varsayılan wp-content/debug.log dosyasının herkese açık olmasının önüne geçer. Üretimde sorun avlarken bu kalıp, ziyaretçiye hiçbir şey göstermeden size ayrıntılı kayıt bırakır.

Önbellek ve Bellek ile Performansı Yükseltin

WordPress varsayılan olarak nesne önbelleğini kalıcı tutmaz. Redis veya Memcached tabanlı bir nesne önbelleği eklediğinizde tekrarlayan sorgular bellekten servis edilir. Sayfa önbelleği eklentilerinin çoğu da WP_CACHE sabitine bakar:

define( 'WP_CACHE', true );
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
define( 'WP_POST_REVISIONS', 5 );
define( 'AUTOSAVE_INTERVAL', 120 );
define( 'EMPTY_TRASH_DAYS', 7 );

Revizyon sayısını sınırlamak ve otomatik kayıt aralığını genişletmek, içerik ağırlıklı sitelerde wp_posts tablosunun gereksiz şişmesini önler. Bellek limitleri ise sayfa oluşturucular veya WooCommerce gibi ağır eklentilerde beyaz ekran (WSOD) hatalarını azaltır. Yüksek trafikli projelerde bu ayarlar, esnek kaynak ayırabildiğiniz bir sanal sunucu üzerinde WordPress barındırma kurgusuyla birlikte çok daha verimli sonuç verir.

Veritabanı ve Cron Yükünü Dizginleyin

Varsayılan WP-Cron, her sayfa isteğinde tetiklenir ve trafik yoğunken sunucuyu yorabilir. Dahili cron'u kapatıp işi sistem zamanlayıcısına devretmek hem daha öngörülebilir hem de daha hafiftir:

define( 'DISABLE_WP_CRON', true );

Ardından sunucu tarafında gerçek bir cron görevi tanımlarsınız:

*/5 * * * * cd /var/www/html && wp cron event run --due-now >/dev/null 2>&1

Tablo öneki olarak wp_ dışına çıkmak ($table_prefix = 'bg7x_';) otomatik SQL enjeksiyon denemelerinin işini zorlaştırır. Yeni kurulumlarda bunu baştan ayarlamak, sonradan migrate etmekten çok daha kolaydır.

Dosya İzinleri ve HTTPS Zorunluluğu

En sıkı yapılandırma bile yanlış dosya izinleriyle çöker. wp-config.php için ideal izin web sunucusunun erişebileceği ama dünyaya kapalı bir değerdir:

chmod 640 wp-config.php
chown www-data:www-data wp-config.php

Yönetici trafiğini şifreli tutmak için panel ve oturum çerezlerini HTTPS'e zorlayın:

define( 'FORCE_SSL_ADMIN', true );
if ( strpos( $_SERVER['HTTP_X_FORWARDED_PROTO'] ?? '', 'https' ) !== false ) {
    $_SERVER['HTTPS'] = 'on';
}

İkinci blok, bir ters proxy veya yük dengeleyici arkasında çalışırken WordPress'in protokolü doğru algılamasını sağlar; aksi halde sonsuz yönlendirme döngüsü yaşanabilir. Cloudflare gibi bir CDN kullanıyorsanız HTTP_X_FORWARDED_PROTO başlığının origin'e iletildiğinden emin olun; aksi takdirde admin paneli her istekte tekrar tekrar HTTPS'e yönlendirmeye çalışır.

Doğrudan Erişimi ve Repository Sızıntısını Engelleyin

Dosya izinleri yerel sunucuda doğru olsa bile, yanlış yapılandırılmış bir web sunucusu wp-config.php içeriğini ham olarak servis edebilir. Apache tarafında kök .htaccess dosyasına basit bir blok eklemek bu riski kapatır:

<Files wp-config.php>
    Require all denied
</Files>

Nginx kullananlar için karşılığı location ~* wp-config\.php { deny all; } bloğudur. Ayrıca dosyayı sürüm kontrolüne dahil ediyorsanız mutlaka .gitignore içine alın; halka açık bir repository'ye düşen veritabanı şifresi, en sık görülen ihlal nedenlerinden biridir.

Bogahost Önerisi: wp-config.php'yi her değiştirmeden önce zaman damgalı bir yedek alın (cp wp-config.php wp-config.php.$(date +%F)) ve değişikliği önce bir staging kopyasında test edin. Tek bir yazım hatası bile siteyi tamamen erişilemez hale getirebilir.

Güvenlik mi, Performans mı? Ayarların Hızlı Haritası

Sabit / AyarBirincil EtkiÖnerilen Değer
DISALLOW_FILE_EDITGüvenliktrue
FORCE_SSL_ADMINGüvenliktrue
WP_DEBUG_DISPLAYGüvenlik / gizlilikfalse (üretim)
WP_CACHEPerformanstrue
WP_MEMORY_LIMITPerformans / kararlılık256M
WP_POST_REVISIONSPerformans / DB boyutu5 veya daha az
DISABLE_WP_CRONPerformanstrue + sistem cron

Tablodaki ayarların çoğu birbirini tamamlar; güvenlik tarafı saldırı yüzeyini daraltırken performans tarafı sunucu kaynaklarını boşa harcamayı engeller. Yönetimli bir altyapı isteyenler için kurulumla birlikte gelen bir WordPress hosting paketi, bu sabitlerin önemli bir kısmını panelden tek tıkla uygulamanıza olanak tanır.

Özet

wp-config.php, küçük bir dosya gibi görünse de WordPress kurulumunuzun en stratejik kontrol noktasıdır. Tuzları tazeleyip dosya editörünü kapatarak, hata çıktısını susturup önbellek ve cron yükünü dengeleyerek, çoğu durumda hem daha güvenli hem de gözle görülür biçimde daha hızlı bir site elde edersiniz. Her değişikliği yedekle ve staging ile destekledikten sonra üretime almak, bu kazanımları riske atmadan kalıcı hale getirir.

Web Siteniz Hızlansın!

Blogumuzu beğendiniz mi? Web siteniz için yüksek performanslı ve %99.9 uptime garantili hosting paketlerimize göz atın.

Paketleri İncele →