xmlrpc.php nedir ve WordPress'te nasıl kapatılır?
Yazan: Eureka Studio · Güncellendi
Kısa yanıt
XML-RPC, uygulamaların xmlrpc.php üzerinden giriş yapmasını sağlar; bu, wp-login.php'yi gizlemenin kapatmadığı ayrı bir kapıdır. Jetpack ya da WordPress mobil uygulamasını kullanmıyorsan kapatmak güvenlidir. Dosyayı .htaccess ile engelle, xmlrpc_enabled filtresini ekle ya da pingback'leri koruyarak XML-RPC girişini kapatan bir eklenti kullan. Sonra test et.
Adımlar
1Adım 1
xmlrpc.php'nin cevap verip vermediğini kontrol et
siten.com/xmlrpc.php adresine git. "XML-RPC server accepts POST requests only." yazısını görüyorsan kapı açık demektir.
2Adım 2
Neden önemli olduğunu anla
Hushfort'un Yüzey Taraması bunu gerçekten dener. Açık bir sitede gizli giriş yolunu atlayarak parola denenebildiğini ve system.multicall sayesinde tek bir isteğin yüzlerce deneme taşıyabildiğini bildirir.

3Adım 3
Ne kadar kapatacağını seç
Hushfort → Yüzey Daraltma sekmesini aç ve Yüzey daraltmayı aç anahtarını aç. XML-RPC, çoğu siteye uyan "Girişi kapat, pingback açık kalsın (önerilen)" seçeneğiyle başlar. "Tamamen kapat" en sıkı seçenektir ama Jetpack'i ve resmi mobil uygulamayı durdurur. Kaydet'e bas.

4Adım 4
XML-RPC üzerinden girişin reddedildiğini test et
Genel Durum ekranına dön ve Yeniden tara'ya bas. XML-RPC satırında artık "Giriş kapalı — parola denemesi reddediliyor, pingback çalışmaya devam ediyor." yazmalı.

Neden önemli
XML-RPC, WordPress için eski bir uzaktan kumanda arayüzüdür. REST API yokken masaüstü editörler ve
mobil uygulamalar yazıları bununla yayınlardı. Hâlâ her WordPress sitesiyle birlikte /xmlrpc.php
adresinde gelir ve hâlâ her istekte bir kullanıcı adı ve parola kabul eder.
Bu da onu ikinci bir giriş kapısı yapar. wp-login.php dosyasını gizlemek ona dokunmaz.
Yalnızca giriş formunu izleyen deneme sınırı kodu onu görmez. Üstelik system.multicall ile tek bir
HTTP isteği yüzlerce parola tahmini taşıyabilir. İstekleri sayan bir sınır, beş yüz deneme olan
yerde tek bir deneme görür.
Bu teorik bir şey değil. Bu katmanı, giriş sayfası zaten gizli olan bir mağaza XML-RPC üzerinden parola denemeleri almaya devam ettikten sonra geliştirdik.
XML-RPC kullanıyor musun? Aşağıdakilerin hiçbiri senin için geçerli değilse büyük ihtimalle hayır:
- Siteyi Jetpack'e bağlıyorsun.
- Resmi WordPress mobil uygulamasından yayın ya da moderasyon yapıyorsun.
- Eski bir masaüstü blog aracı ya da senin adına yazı yayınlamak için (uygulama parolası yerine) WordPress kullanıcı adını ve parolanı isteyen bir servis kullanıyorsun.
- Başka bloglardan gelen pingback'lere güveniyorsun.
Emin değilsen yalnızca girişi kapat, pingback'leri koru. Bu, parola tahmini riskini ortadan kaldırır ve zararsız kısımları yerinde bırakır. Daha sonra her zaman daha sıkı bir seçeneğe geçebilirsin.
Sık yapılan hatalar
- Girişi gizleyip orada durmak. Parola tahmini doğrudan
xmlrpc.phpdosyasına kayar. - Kontrol etmeden dosyanın tamamını engellemek. Jetpack ve resmi WordPress mobil uygulaması XML-RPC üzerinden bağlanır. Bunları kullanıyorsan yalnızca giriş metotlarını kapat ya da dikkatle test et.
- Test etmeden bir anahtara güvenmek. Bazı yöntemler XML-RPC'nin bazı kısımlarını cevap verir halde bırakır. Sonucu her zaman gerçek bir istekle kontrol et (4. adıma ya da sitenin neleri açık ettiğini kontrol etme rehberine bak).
- Önbellek katmanını unutmak. Bir CDN kuralı
xmlrpc.phpdosyasını zaten engelliyorsa WordPress düzeyindeki bir ayarın hiçbir etkisi görünmez. Sorun değil; yalnızca işi hangi katmanın yaptığını bil.
Eklentisiz
Seçenek 1: xmlrpc_enabled filtresi. Bunu küçük bir must-use eklentisine
(wp-content/mu-plugins/no-xmlrpc-login.php) ya da alt temanın functions.php dosyasına ekle:
<?php
add_filter( 'xmlrpc_enabled', '__return_false' );
Bu, giriş gerektiren XML-RPC metotlarını kapatır. Pingback'ler giriş gerektirmediği için çalışmaya
devam eder. Tek başına system.multicall metodunu kaldırmaz ve dosya isteklere cevap vermeyi
sürdürür. Multicall metodunu da kaldırmak için:
<?php
add_filter( 'xmlrpc_methods', function ( $methods ) {
unset( $methods['system.multicall'] );
return $methods;
} );
Seçenek 2: dosyayı sunucuda engellemek. Apache'de, .htaccess içinde:
<Files xmlrpc.php>
Require all denied
</Files>
Nginx'te: location = /xmlrpc.php { deny all; }. En sıkı seçenek budur ve sunucuya hiçbir yük
getirmez; ama pingback'leri, Jetpack'i ve mobil uygulamayı da öldürür ve WordPress'in dışında
durduğu için firma değiştirdiğinde unutulması kolaydır.
Bir şeyler ters giderse
- Jetpack bağlantı hatası gösteriyor. Jetpack'in XML-RPC'ye ihtiyacı var. "Tamamen kapat" seçeneğinden "Girişi kapat, pingback açık kalsın" seçeneğine geç ya da sunucu kuralını kaldır.
- WordPress mobil uygulaması giriş yapamıyor. Sebep aynı. Ya mobilde tarayıcıyı kullan ya da XML-RPC girişine izin verip deneme sınırı ve iki adımlı doğrulamaya güven.
- Bir yayın aracı yazı göndermeyi bıraktı. XML-RPC kullanıp kullanmadığını kontrol et. Modern araçların çoğu uygulama parolalarıyla REST API'ye geçti.
Hushfort ile
Arka Kapı Kilidi Hushfort Pro'nun parçasıdır. XML-RPC'nin açık olup olmadığını gösteren Yüzey Taraması ise ücretsiz WordPress güvenlik eklentisi Hushfort Security'de yer alır.
Arka Kapı Kilidi, Hushfort'un Yüzey Daraltma katmanının bir parçasıdır. Sana dört seçenek sunar:
- Girişi kapat, pingback açık kalsın (önerilen): XML-RPC üzerinden parola tahmini imkânsız hale gelir, pingback ve trackback'ler çalışmaya devam eder. Mağaza siteleri için iyi bir seçim.
- Tamamen kapat: en sıkı seçenek. Jetpack ve resmi mobil uygulama bağlanamaz.
- Yalnızca system.multicall'ı kapat: toplu tahmini kapatır, gerisine dokunmaz.
- Dokunma: WordPress varsayılanı.
Ardından Yüzey Taraması sonucu gerçek isteklerle kontrol eder; böylece dışarıdan birinin ne
gördüğünü görürsün. Yük Koruması da xmlrpc.php isteklerini normal bir sayfa görüntülemesinden daha
pahalı fiyatlar; bu da geriye kalan gürültüyü yavaşlatır.
Sık sorulan sorular
WordPress'te XML-RPC'yi kapatmak güvenli mi?
Giriş sayfasını gizlemek xmlrpc.php'yi de gizler mi?
system.multicall nedir?
XML-RPC'yi kapatmak pingback'leri bozar mı?
xmlrpc_enabled filtresi XML-RPC'yi tamamen kapatır mı?
İlgili rehberler
WordPress sitemin neleri açık ettiğini görmek için nasıl güvenlik kontrolü yaparım?
WordPress siteni bir bot gibi test et: beş istek giriş sayfasının, XML-RPC'nin ve kullanıcı adlarının açık olup olmadığını ve neyi kapatacağını gösterir.
Adımları okuWordPress'te giriş denemelerini nasıl sınırlarım?
WordPress'te giriş denemesi sınırla: birkaç başarısız girişten sonra IP'yi kilitle, kaba kuvveti durdur. Doğru ayarlar, elle kod ve kapatılacak açıklar.
Adımları okuWordPress giriş adresini (URL) nasıl değiştiririm?
WordPress giriş adresini değiştir ve wp-admin'i beş güvenli adımda gizle. Çıkış yapmadan önce test et, adresi unutursan içeri nasıl döneceğini bil.
Adımları oku
