DISALLOW_FILE_EDIT: WordPress dosya düzenleyiciyi kapatın
wp-config.php'ye DISALLOW_FILE_EDIT nasıl eklenir, neleri engellemez ve güncellemeleri bozmadan DISALLOW_FILE_MODS ne zaman işe yarar? Adım adım rehber.
Diğer diller: English Deutsch Français Español Italiano Polski Português
wp-config.php dosyasına tek bir satır ekleyin: define( 'DISALLOW_FILE_EDIT', true );. Bu satır, Tema Dosyası Düzenleyicisi'ni ve Eklenti Dosyası Düzenleyicisi'ni panelden kaldırır. İki dakikanızı alır ve güncellemeleri etkilemez. Ayrıca çalınmış bir yönetici parolasından sunucunuzda çalışan koda giden en kısa yolu da ortadan kaldırır.
Bu yazıda DISALLOW_FILE_EDIT ayarının neden önemli olduğunu, nasıl güvenle uygulanacağını ve neleri engellemediğini anlatıyoruz. Ayrıca daha sıkı olan DISALLOW_FILE_MODS sabitinin ek emeğe ne zaman değdiğine de bakıyoruz.
DISALLOW_FILE_EDIT neden önemli: yönetici girişinden çalışan koda
WordPress'te iki yerleşik kod düzenleyicisi bulunur. Tema Dosyası Düzenleyicisi, klasik temalarda Görünüm altında, blok temalarda ise Araçlar altındadır. Eklenti Dosyası Düzenleyicisi klasik temalarda Eklentiler altında, blok temalarda yine Araçlar altında yer alır. İkisi de yöneticilerin (multisite'ta süper yöneticilerin) PHP dosyalarını tarayıcıda değiştirip kaydetmesine izin verir; sunucu bu kodu bir sonraki sayfa yüklemesinde çalıştırır.
Yani bir yönetici girişi, pratikte kabuk (shell) erişimi demektir. Oltalamayla ele geçirilmiş, başka yerde de kullanılmış ya da kaba kuvvetle kırılmış bir yönetici parolası olan kişi functions.php dosyasını açıp bir arka kapı yapıştırabilir. Arama motorlarından gelen ziyaretçiler için gizli bir yönlendirme de ekleyebilir, ödeme şablonuna kart bilgisi çalan bir kod da yerleştirebilir. Bunların hiçbiri FTP ya da hosting erişimi gerektirmez; yalnızca giriş bilgisi yeter.
Canlı sitelerin çoğu tarayıcıda kod düzenlemeye hiç ihtiyaç duymaz. Geliştiriciler bir kod editöründe, staging ortamında ya da sürüm kontrolü üzerinden çalışır. Canlı PHP'yi bir metin kutusunda düzenlemenin geri alma seçeneği de yoktur, gözden geçirme aşaması da; tek bir sözdizimi hatası siteyi çökertebilir. Canlı bir iş sitesinde düzenleyici, riskten başka pek bir şey katmaz.
Girişin kendisini korumak ayrı bir iştir; bunu WordPress yöneticileri için iki faktörlü kimlik doğrulama rehberimizde ele aldık. DISALLOW_FILE_EDIT ise çalınmış bir girişin neler yapabileceğini sınırlar.
DISALLOW_FILE_EDIT'i wp-config.php'ye ekleme
wp-config.phpdosyasının bir kopyasını indirip yedek olarak saklayın. Birçok hosting ortamında dosya WordPress kök dizinindedir. Bazı kurulumlarda bir üst dizinde durur.- Dosyayı SFTP ile ya da hosting sağlayıcınızın dosya yöneticisiyle açın. Bu iş için WordPress eklentisi kullanmayın.
- Dosyada
DISALLOW_FILE_EDITaraması yapın. Sabit zaten tanımlıysa ikinci bir satır eklemek yerine mevcut satırı değiştirin. Bir sabiti iki kez tanımlamak PHP uyarısına yol açar. - Satırı
/* That's all, stop editing!ile başlayan yorumun üstüne ekleyin. Satır,wp-settings.phpyüklenmeden önce gelmelidir. - Kaydedin, yükleyin ve paneli yeniden yükleyin.
/* Panelde Tema ve Eklenti Dosyası Düzenleyicilerini kapat */
define( 'DISALLOW_FILE_EDIT', true );
/* That's all, stop editing! Happy publishing. */
Sonra sonucu kontrol edin. Tema Dosyası Düzenleyicisi ve Eklenti Dosyası Düzenleyicisi menü girişleri kaybolmuş olmalı. /wp-admin/theme-editor.php adresini doğrudan açarsanız artık düzenleyici yerine bir yetki hatası görmelisiniz.
Bu sabiti panelden geri açamazsınız ve amaç da tam olarak budur. Düzenleyiciyi geri isteyen birinin yalnızca yönetici parolasına değil, sunucudaki dosyalara erişimi olması gerekir. Ayar tüm kuruluma uygulanır; multisite'ta ağdaki her siteyi kapsar. Resmî wp-config.php belgeleri bu sabiti diğer yapılandırma sabitleriyle birlikte listeler.
SFTP veya dosya yöneticisi erişiminiz yoksa secaudit.eu'nun Security Audit & Compliance eklentisi panel dosya düzenleyicilerini kapatan isteğe bağlı bir anahtar sunar.
Dosya düzenleyiciyi kapatmak nelere karşı koruma sağlamaz
DISALLOW_FILE_EDIT en kolay yolu kapatır. Bir yönetici hesabını zararsız hâle getirmez. Bir yönetici ya da o hesabı kullanan saldırgan yine şunları yapabilir:
- Eklentiler → Yeni Ekle ya da Görünüm → Temalar altından kötü amaçlı kod içeren bir eklenti veya tema zip'i yüklemek
- yeni yönetici hesapları oluşturmak, yönetici e-postasını değiştirmek veya diğer kullanıcıların parolalarını sıfırlamak
- site adresi, kullanıcı kaydı ya da varsayılan rol gibi ayarları değiştirmek
- kullanıcı ve sipariş verilerini dışa aktarmak
FTP, SSH, hosting paneli ya da veritabanı erişimi olan saldırganlar WordPress'i tamamen atlar; hiçbir wp-config.php sabiti onları durdurmaz. Sabit, giriş yapmadan istismar edilebilen savunmasız eklentilere karşı da bir şey yapmaz. O ayrı bir sorundur, kendi çözümleri vardır ve savunmasız WordPress eklentileri rehberimizde anlatılır.
DISALLOW_FILE_EDIT'i tek bir katman olarak görün. Ucuzdur ve kesinlikle değer, ama zayıf bir girişi ya da yamasız bir eklentiyi düzeltmez.
Dosya yöneticisi ve kod parçacığı eklentileri: başka adla düzenleyici
Birkaç eklenti türü aynı riski geri getirir ve DISALLOW_FILE_EDIT bunları kapsamaz:
- panelden dosyalara göz atmanızı, düzenlemenizi ve yüklemenizi sağlayan dosya yöneticisi eklentileri
- PHP kodunu saklayıp her istekte çalıştıran kod parçacığı (snippet) yöneticileri
- betik veya PHP kabul eden "header/footer kodu ekle" alanları
- "özel kod" kutusu bulunan tema ya da sayfa oluşturucu seçenekleri
Bunlardan biri etkinse, yönetici girişi olan bir saldırganın elinde yine bir kod düzenleyici vardır.
Önce elinizde neler olduğunu listeleyin. Eklentiler → Yüklü Eklentiler ekranını ve tema seçeneklerinizi gözden geçirin; dosya düzenleyebilen ya da özel kod çalıştırabilen her şeyi not edin. Sonra her türü ayrı ele alın:
- Dosya yöneticileri: tek seferlik iş bittiği anda silin. Devre dışı bırakmak yetmez; kod sunucuda kalır ve kendi başına açık barındırabilir.
- Gerçekten ihtiyaç duyduğunuz parçacıklar: küçük bir özel eklentiye ya da alt temaya (child theme) taşıyın ve sürüm kontrolünde tutun. Böylece değişiklikler tarayıcı yerine normal dağıtım sürecinizden geçer.
- Tuttuğunuz parçacık yöneticileri: hangi rollerin parçacık oluşturup düzenleyebildiğine bakın ve bunu mümkün olan en az kişiyle sınırlayın.
DISALLOW_FILE_MODS: daha sıkı kilit, gerçek bedeller
define( 'DISALLOW_FILE_MODS', true ); daha da ileri gider. Panelden eklenti ve tema kurmayı, güncellemeyi ve silmeyi engeller. WordPress'in otomatik arka plan güncellemelerini de kapatır. Böylece DISALLOW_FILE_EDIT'in açık bıraktığı zip yükleme yolu kapanır.
Bedeli şu: hiçbir şey kendiliğinden güncellenmez. Güncellemeleri başka bir yoldan kimse yapmazsa site güvenlik düzeltmelerinin gerisinde kalır. Olağan güncelleme bildirimleri de panelden kaybolur. Arka plan güncellemelerinin kapalı olduğunu yalnızca Site Sağlığı (Site Health) işaretler; bu yüzden eksik kolayca gözden kaçar.
| Sabit | Neyi engeller | Yan etki | Kim kullanmalı |
|---|---|---|---|
DISALLOW_FILE_EDIT | Tema/Eklenti Dosyası Düzenleyicileri | Güncellemelere etkisi yok | Neredeyse her canlı site |
DISALLOW_FILE_MODS | Düzenleyiciler, kurulum, güncelleme, silme, otomatik güncellemeler | Güncellemeler için başka bir yol gerekir | Dağıtım süreci olan ekipler |
DISALLOW_FILE_MODS'u açmadan önce güncelleme yolunu kurun
Aşağıdaki yaklaşımlardan birini seçin ve rutin hâline getirin:
- Sunucuda WP-CLI. Güncellemeleri komut satırından, elle ya da zamanlanmış bir görev olarak çalıştırın:
wp core update
wp plugin update --all
wp theme update --all
- Git veya Composer ile dağıtım. Eklenti ve tema sürümleri deponuzda tanımlanır, bir pipeline siteyi derleyip dağıtır. Güncellemeler, gözden geçirebileceğiniz ve geri alabileceğiniz commit'lere dönüşür.
- Yönetilen hosting güncelleme araçları. Bazı sağlayıcılar güncellemeleri sizin yerinize yapar; çoğu zaman önce yedek alır ya da görsel kontrol çalıştırır. Tam olarak neyin kapsandığını ve premium eklentilerin dahil olup olmadığını öğrenin.
Seçtiğiniz yöntemi, DISALLOW_FILE_MODS zaten etkinken bir staging kopyasında deneyin. Orada neyin çalışacağını sunucu yapılandırmanız belirler; canlı ortamı değiştirmeden önce bunu doğrulayın.
Güncellemeleri bir cron görevi ya da pipeline tetikleyicisiyle zamanlayın ve görevin gerçekten çalıştığını kontrol edin. Sessizce başarısız olan bir görev, hiç görev olmamasından farksızdır. Neyin ne zaman güncellendiğinin kaydını tutun. Bu kayıt, GDPR (AB Genel Veri Koruma Tüzüğü) Madde 32 kapsamındaki "uygun teknik ve organizasyonel önlemlerin" işe yarar bir kanıtıdır.
Hız önemlidir. Bir güvenlik firması olan Patchstack, State of WordPress Security in 2026 raporunda, yoğun biçimde istismar edilen açıklarda kitlesel istismara kadar geçen ağırlıklı medyan sürenin 5 saat olduğunu bildiriyor. Ayda bir elle yapılan güncelleme turu buna yetişemez.
Kilidin hâlâ yerinde olduğunu kontrol edin
Sabitler; taşımalar, hosting değişiklikleri ve "geçici" hata ayıklama sırasında kolayca kaybolur. Zaman zaman kontrol edin:
grep -n DISALLOW_FILE wp-config.php
wp config get DISALLOW_FILE_EDIT
İlk komut eşleşen her satırı satır numarasıyla gösterir. İkincisi, WP-CLI'ın yapılandırmadan okuduğu değeri verir. Yeni bir sunucuya ya da hosting sağlayıcısına her geçişten sonra ikisini de yeniden çalıştırın. Temanızdaki ve eklentilerinizdeki PHP dosyalarında beklenmedik değişiklik olup olmadığına da dikkat edin. Kilit yerindeyken böyle bir değişiklik, birinin içeri başka bir yoldan girdiği anlamına gelir.
Düzenleyicinin zaten size karşı kullanıldığını fark ederseniz, artık konu sıkılaştırma değil olay müdahalesidir. Başka bir şeyi değiştirmeden önce web shell'leri bulma ve WordPress kötü amaçlı yazılım temizliği rehberlerimizi okuyun.
secaudit.eu denetim eklentisi, dosya düzenleyici dahil sıkılaştırma ve yapılandırma ayarlarınızı kontrol eder. Dosya bütünlüğünü de bir referans değere göre izler; böylece tema ve eklenti dosyalarındaki değişiklikler raporda görünür → secaudit.eu
SSS
DISALLOW_FILE_EDIT sitemi ya da güncellemeleri bozar mı?
Hayır. Yalnızca paneldeki iki düzenleyiciyi kaldırır. Otomatik güncellemeler dahil eklenti, tema ve çekirdek güncellemeleri çalışmaya devam eder. Güncellemelerin işleyişini yalnızca DISALLOW_FILE_MODS değiştirir.
Düzenleyiciyi geçici olarak yeniden açabilir miyim?
Evet. Sabiti false yapın ya da satırı yorum satırına alın, işiniz bitince eski hâline getirin. Daha iyisi, dosyayı SFTP üzerinden ya da staging ortamında düzenlemektir; böylece düzenleyiciyi hiç geri açmanız gerekmez.
WordPress'te bu ayar panelde var mı?
Hayır. Çekirdekte bunun için bir panel seçeneği yok; wp-config.php içinde tanımladığınız bir sabittir. O dosyayı düzenleyemiyorsanız, dosya düzenleyicileri kapatan bir anahtar sunan bir eklenti kullanın.
Kendi sitenizi kontrol edin
Security Audit & Compliance, secaudit.eu’nun WordPress eklentisidir: zararlı yazılımları, gizli spam’i, değiştirilmiş çekirdek dosyalarını ve açıklı kodu tarar; bulguları GDPR Md. 32, NIS2 Md. 21 ve OWASP Top 10 ile eşleştirir.
Eklentinin neleri kontrol ettiğini görün