WordPress, dünya genelinde milyonlarca web sitesine güç veren açık kaynaklı bir içerik yönetim sistemidir. Bu yaygınlık, onu siber saldırganların öncelikli hedeflerinden biri haline getirmektedir. WordPress kurulumunuzda alacağınız küçük ama etkili güvenlik önlemleri, olası bir saldırının boyutunu dramatik biçimde küçültebilir. Bu önlemlerin en kritiklerinden biri, WordPress yönetici paneli üzerinden dosya düzenleme özelliğinin devre dışı bırakılmasıdır.
Varsayılan WordPress kurulumunda, yönetici yetkisine sahip kullanıcılar Görünüm > Tema Dosyası Düzenleyici ve Eklentiler > Eklenti Dosyası Düzenleyici menüleri aracılığıyla doğrudan sunucu dosyalarını değiştirebilir. Bu özellik, ilk bakışta pratik görünse de güvenlik açısından son derece tehlikeli bir kapı aralığı bırakmaktadır.
Neden Bu Özellik Bir Güvenlik Riski Oluşturur?
WordPress’in yerleşik dosya düzenleyicisi, PHP kodlarını doğrudan tarayıcı üzerinden değiştirmeye olanak tanır. Bir saldırgan yönetici hesabına erişim sağladığında yapabileceği ilk ve en yıkıcı şeylerden biri, bu düzenleyiciyi kullanarak sunucuya zararlı PHP kodu yerleştirmektir. Tek bir yönetici şifresinin ele geçirilmesi, tüm sunucunun ele geçirilmesine zemin hazırlayabilir.
Bunun yanı sıra, brute force saldırıları, kimlik avı (phishing) girişimleri veya oturum çalma yöntemleriyle ele geçirilen bir yönetici hesabı üzerinden; tema dosyalarına arka kapı (backdoor) kodu enjekte edilebilir, kötü amaçlı JavaScript ya da PHP parçacıkları eklenebilir, mevcut kullanıcı verileri çalınabilir ve tüm site zararlı içeriklere yönlendirilebilir. Bu senaryoların hiçbirinde saldırganın FTP erişimine veya sunucu paneline ihtiyacı yoktur; yalnızca bir yönetici kullanıcı adı ve şifre yeterlidir.
wp-config.php ile Dosya Düzenlemeyi Kapatmak
Dosya düzenleme özelliğini devre dışı bırakmanın en yaygın ve en güvenilir yöntemi, wp-config.php dosyasına tek bir sabit (constant) eklemektir. Bu sabit şudur:
define('DISALLOW_FILE_EDIT', true);
Bu satırı wp-config.php dosyanızın içinde, /* That's all, stop editing! */ yazan satırın üstüne ekleyin. Değişikliği kaydettikten sonra WordPress yönetici panelinde Görünüm > Tema Dosyası Düzenleyici ve Eklentiler > Eklenti Dosyası Düzenleyici menü seçenekleri tamamen kaybolacaktır. Panele erişim sağlamış herhangi bir kullanıcı, bu özelliği artık kullanamamaktadır.
Bu yöntem; herhangi bir eklenti gerektirmez, sunucu kaynaklarını tüketmez, geri alınması kolaydır ve WordPress’in resmi belgelerinde de önerilen bir uygulamadır.
DISALLOW_FILE_MODS ile Daha Kapsamlı Koruma
Yalnızca dosya düzenlemeyi değil, eklenti ve tema kurulumunu ile güncellemelerini de kısıtlamak istiyorsanız daha kapsamlı bir sabit kullanabilirsiniz:
define('DISALLOW_FILE_MODS', true);
Bu sabit etkinleştirildiğinde; tema ve eklenti dosyaları düzenlenemez, yönetici panelinden yeni eklenti veya tema yüklenemez, mevcut eklenti ve temaların güncellemeleri yapılamaz ve WordPress çekirdek güncellemeleri de engellenir.
Dikkat: DISALLOW_FILE_MODS sabiti etkinleştirildiğinde otomatik güncellemeler de duracağından, güncellemeleri manuel olarak veya WP-CLI aracılığıyla gerçekleştirmeniz gerekir. Bu sabit, özellikle çoklu yönetici kullanıcısı olan siteler için ya da yönetici hesaplarının kimlere ait olduğu tam olarak kontrol edilemeyen ortamlar için son derece değerlidir.
FTP veya SSH ile wp-config.php Dosyasını Düzenleme
wp-config.php dosyasını düzenlemek için yönetici panelinin kendisini kullanmak, döngüsel bir güvenlik açığı yaratır. Bu nedenle dosyayı her zaman doğrudan sunucu erişimi üzerinden değiştirmelisiniz.
FTP/SFTP ile düzenleme adımları:
FileZilla gibi bir FTP istemcisi kullanarak sunucunuza bağlanın. WordPress kök dizininde (genellikle public_html veya www) wp-config.php dosyasını bulun. Dosyayı yerel bilgisayarınıza indirin, bir metin editörüyle açın ve ilgili satırı ekleyip kaydedin. Ardından güncellenmiş dosyayı sunucuya geri yükleyin.
SSH ile düzenleme adımları:
Sunucunuza SSH ile bağlandıktan sonra aşağıdaki komutu kullanabilirsiniz:
nano /var/www/html/wp-config.php
Gerekli satırı ekleyip Ctrl+X, ardından Y tuşuna basarak dosyayı kaydedin.
cPanel veya Hosting Kontrol Paneli Üzerinden Düzenleme
Birçok paylaşımlı hosting sağlayıcısında SSH erişimi bulunmaz. Bu durumda cPanel > Dosya Yöneticisi üzerinden wp-config.php dosyasına erişebilir ve aynı değişikliği yapabilirsiniz. Dosya Yöneticisi’nde gizli dosyaları gösterme seçeneğini aktif etmeyi unutmayın; zira bazı hostinglerde wp-config.php gizli dosya olarak işaretlenmiş olabilir.
Yönetici Kullanıcılarını Rollerine Göre Kısıtlamak
DISALLOW_FILE_EDIT sabiti, tüm yönetici kullanıcıları için geçerlidir; belirli kullanıcılar için seçici kısıtlama yapmanıza izin vermez. Daha granüler bir kullanıcı rol yönetimi istiyorsanız User Role Editor veya Members gibi eklentilerle edit_themes ve edit_plugins yeteneklerini (capabilities) belirli rollerden kaldırabilirsiniz. Bu yöntem, örneğin birden fazla yönetici hesabının bulunduğu bir ajans ortamında belirli yöneticilerin kod düzenlemesini engellerken diğerlerine bu yetkiyi bırakmak için idealdir.
Güvenli Bir Geliştirme Altyapısı Oluşturmak
Dosya düzenlemeyi devre dışı bırakmak, geliştiricilerin çalışmasını zorlaştırır diye düşünülebilir. Ancak doğru geliştirme altyapısında dosyaların tarayıcı üzerinden düzenlenmesi zaten en kötü pratik olarak kabul edilir. Aşağıdaki yaklaşım, hem güvenliği hem de geliştirici deneyimini optimize eder:
Yerel geliştirme ortamı (LocalWP, XAMPP veya Docker) üzerinde değişiklikler yapılır. Bu değişiklikler Git gibi bir sürüm kontrol sistemiyle takip edilir. Staging ortamına deploy edilerek test edilir. Son olarak production sunucusuna SFTP veya CI/CD pipeline’ı aracılığıyla aktarılır.
Bu iş akışıyla, yönetici paneli üzerinden kod yazmaya hiçbir zaman ihtiyaç duyulmaz. DISALLOW_FILE_EDIT sabiti, geliştiricileri bu doğru alışkanlığa yönlendiren bir zorunluluk haline gelir.
Ek Güvenlik Önlemleriyle Bütünleşik Koruma
Dosya düzenlemeyi devre dışı bırakmak güçlü bir adımdır; ancak tek başına yeterli değildir. Bu önlemi destekleyen diğer güvenlik katmanları şunlardır:
İki faktörlü kimlik doğrulama (2FA) zorunlu kılınmalıdır; böylece şifre ele geçirilse bile hesaba erişim sağlanamaz. wp-login.php dosyasına IP kısıtlaması uygulanarak yalnızca güvenilir IP adreslerinden giriş yapılmasına izin verilebilir. Dosya izinleri doğru şekilde yapılandırılmalı; wp-config.php için 400 veya 440, diğer dosyalar için 644, dizinler için 755 izni önerilir. Wordfence veya Sucuri gibi bir güvenlik eklentisi ile dosya değişikliklerinin gerçek zamanlı izlenmesi sağlanmalıdır. Son olarak düzenli yedekleme rutini kurulmalı; olası bir ihlal sonrasında temiz bir duruma hızlıca dönülebilmelidir.
Yapılan Değişikliği Doğrulamak
Sabiti wp-config.php dosyasına ekledikten sonra değişikliğin gerçekten etkin olup olmadığını doğrulamak için WordPress yönetici panelinize giriş yapın ve Görünüm menüsünü kontrol edin. Eğer Tema Dosyası Düzenleyici seçeneği görünmüyorsa, işlem başarıyla tamamlanmıştır. Aynı kontrolü Eklentiler menüsünde de gerçekleştirin. Eklenti dosyası düzenleyicisinin de kaybolmuş olması gerekir.
Eğer değişiklik gözlemlenmiyorsa, wp-config.php dosyasının doğru konuma kaydedilip kaydedilmediğini ve sabiti eklerken PHP sözdiziminde hata yapılmadığını kontrol edin. Bazı önbellek eklentileri değişikliğin hemen yansımasını geciktirebilir; bu durumda önbelleği temizlemek sorunu çözecektir.
WordPress güvenliği, katmanlı bir yaklaşım gerektiren ve sürekli dikkat isteyen bir alandır. DISALLOW_FILE_EDIT sabiti bu katmanların en temellerinden biridir ve her canlı WordPress kurulumunda mutlaka uygulanması gereken bir yapılandırmadır.








