Geniş xmlrpc.php Rehberi

XML-RPC WordPress spesifikasyonu, farklı sistemler arasındaki iletişimi standartlaştırmak için geliştirilmiştir, yani WordPress dışındaki uygulamaların (diğer blog platformları ve masaüstü istemcileri gibi) WordPress ile etkileşime girebileceği anlamına gelir.

Bu özellik, kuruluşundan bu yana WordPress’in bir parçasıdır ve çok yararlı bir iş çıkardı. Onsuz, WordPress internetin geri kalanından ayrı olarak kendi başına takılan bir sistem olurdu. Ancak, xmlrpc.php’nin dezavantajları vardır. WordPress sitenize güvenlik açıkları getirebilir ve artık WordPress’i diğer uygulamalara bağlamanın çok daha iyi bir işini yapan WordPress REST API’sine yerini bırakmıştır.

Bu yazıda xmlrpc.php’nin ne olduğunu, neden devre dışı bırakmanız gerektiğini ve WordPress sitenizde çalışıp çalışmadığını belirlemenize yardımcı olacağız.

Xmlrpc.php nedir?

XML-RPC, WordPress ve diğer sistemler arasında iletişim sağlayan bir özelliktir. Bunu, aktarım mekanizması olarak HTTP ve kodlama mekanizması olarak XML kullanarak bu iletişimleri standartlaştırarak yaptı.

XML-RPC, WordPress’ten öncede vardı: 2003’te WordPress oluşturması için çatallanan b2 blog yazılımında mevcuttu. Sistemin arkasındaki kod, sitenin kök dizininde xmlrpc.php adlı bir dosyada saklanır. XML-RPC büyük ölçüde modası geçmiş olsa bile hala orada.

WordPress’in önceki sürümlerinde, XML-RPC varsayılan olarak kapalıdır. Ancak 3.5 sürümünden beri, varsayılan olarak etkin hale getirilmiştir. Bunun ana nedeni, WordPress mobil uygulamasının WordPress kurulumunuzla konuşmasına izin vermekti.

Sürüm 3.5’ten önce WordPress mobil uygulamasını kullandıysanız, uygulamanın içerik yayınlayabilmesi için sitenizde XML-RPC’yi etkinleştirmeniz gerektiğini hatırlayabilirsiniz. Bunun nedeni, uygulamanın WordPress’in kendisini çalıştırmamasıydı; bunun yerine xmlrpc.php kullanarak WordPress sitenizle iletişim kuran ayrı bir uygulamadır.

Ancak sadece XML-RPC’nin kullanıldığı mobil uygulama değildi: WordPress ve diğer bloglama platformları arasındaki iletişime izin vermek için de kullanıldı, geri izleme ve pingback’leri etkinleştirdi ve kendi kendine barındırılan bir WordPress’i bağlayan Jetpack eklentisini güçlendirdi.

Ancak REST API’si WordPress çekirdeğine entegre edildiğinden, xmlrpc.php dosyası artık bu iletişim için kullanılmamaktadır. Bunun yerine, REST API, WordPress mobil uygulaması, masaüstü istemcileri, diğer bloglama platformları, WordPress.com (Jetpack eklentisi için) ve diğer sistem ve hizmetler ile iletişim kurmak için kullanılır. REST API’nin etkileşimde bulunabileceği sistem aralığı, xmlrpc.php tarafından izin verilenlerden çok daha fazladır.

Neden xmlrpc.php’yi Devre Dışı Bırakmalısınız?

WordPress sitenizde xmlrpc.php’yi devre dışı bırakmanızın ana nedeni, güvenlik açıklarını yaratması ve saldırıların hedefi olabilmesidir. Artık WordPress dışında iletişim kurmak için XML-RPC’ye gerek olmadığına göre, onu aktif tutmak için bir neden yok. Bu nedenle sitenizi devre dışı bırakarak daha güvenli hale getirmek akıllıca olacaktır.

Xmlrpc.php bir güvenlik yükümlülüğü ise ve artık bir iş yapmıyorsa, neden WordPress’ten tamamen kaldırılmadı?

Bunun nedeni, WordPress’in temel özelliklerinden birinin her zaman geriye dönük uyumluluk olmasıdır. Sitenizi iyi yönetiyorsanız, WordPress’i ve eklentileri veya temaları güncel tutmanın çok önemli olduğunu bileceksiniz. Ancak, WordPress sürümlerini güncellemek istemeyen veya güncelleyemeyen web sitesi sahipleri her zaman olacaktır. REST API’sinden önce gelen bir sürümü çalıştırıyorlarsa, yine de xmlrpc.php dosyasına erişmeleri gerekir.

Belirli güvenlik açıklarına daha ayrıntılı bakalım.

XML-RPC Pingback DDoS Saldırıları

Xmlrpc.php’nin etkinleştirdiği işlevlerden biri pingback ve geri izlemedir. Bunlar, başka bir blog veya site içeriğinize bağlantı verdiğinde sitenizdeki yorumlarda görünen bildirimlerdir.

XML-RPC belirtimi bu iletişimi mümkün kılan şeydi, ancak bunun yerine REST API (daha önce gördüğümüz gibi) değiştirildi.

Sitenizde XML-RPC etkinse, bir bilgisayar korsanı, sitenize kısa sürede çok sayıda pingback göndermek için xmlrpc.php’den yararlanarak bir DDoS saldırısı gerçekleştirebilir. Bu, sunucunuza aşırı yükleme yapar ve sitenizi devre dışı bırakabilir.

XML-RPC ile Kaba Kuvvet Saldırıları

Xmlrpc.php her istek yaptığında, kimlik doğrulama için kullanıcı adını ve şifreyi gönderir. Bu önemli bir güvenlik yükümlülüğü sunar ve REST API’sinin yapmadığı bir şeydir. Aslında, REST API, kimlik doğrulaması için kullanıcı adları veya şifreler yerine OAuth’u kullanır.

Xmlrpc.php her istekte kimlik doğrulama bilgileri gönderdiğinden, bilgisayar korsanları sitenize erişmek için bu bilgileri kullanabilir. Bunun gibi bir kaba kuvvet saldırısı, içerik eklemelerine, kodu silmelerine veya veritabanınıza zarar vermelerine izin verebilir.

Bir saldırgan sitenize, her biri farklı bir kullanıcı adı ve şifre çiftine sahip yeterli istek gönderirse, sonunda siteye erişme şansı vardır ve bu da sitenize erişmelerini sağlar.

Bu nedenle, harici sistemlerle iletişim kurmak için REST API’sini kullanan WordPress’in güncel bir sürümünü kullanıyorsanız, xmlrpc.php’yi devre dışı bırakmalısınız. Gerekli değildir ve sitenizi savunmasız bırakıyor olabilir.

Xmlrpc.php WordPress Sitenizde Çalışıyor mu?

Yapmanız gereken ilk şey, xmlrpc.php dosyasının WordPress sitenizde çalışıp çalışmadığını belirlemektir. Bu, dosyanın orada olup olmadığını kontrol etmek gibi basit bir durum değildir çünkü her WordPress kurulumunun bir parçasıdır ve XML-RPC devre dışı olsa bile mevcut olacaktır.

Sitenizde xmlrpc.php dosyasının etkin olup olmadığını kontrol etmek için WordPress XML-RPC Doğrulama Hizmeti‘ni kullanın. Bu, sitenizi kontrol eder ve xmlrpc.php’nin etkin olup olmadığını söyler.

Xmlrpc.php nasıl devre dışı bırakılır?

Xmlrpc.php’yi devre dışı bırakmanın birçok yolu vardır.

Eklenti ile xmlrpc.php nasıl devre dışı bırakılır?

Xmlrpc.php’yi devre dışı bırakmak için bir eklenti yüklemek bunu yapmanın en kolay yoludur. Disable XML-RPC eklentisi tamamen devre dışı bırakılır. Eklentiyi WordPress yöneticisindeki Eklentiler ekranınızdan yükleyin ve etkinleştirin. Başka bir şey yapmanız gerekmez: Eklentiyi etkinleştirmek XML-RPC’yi devre dışı bırakmasına neden olur.

Eklenti ile XML-RPC Pingback’lerini Devre Dışı Bırakma

Peki ya xmlrpc.php bazı yönlerini değil diğerlerini devre dışı bırakmak istiyorsanız? Disable XML-RPC Pingback , yalnızca pingback işlevini devre dışı bırakmanıza olanak tanır; yani, gerekirse XML-RPC’nin diğer özelliklerine hala erişebilirsiniz.

Eklenti Olmadan xmlrpc.php Nasıl Devre Dışı Bırakılır

Sitenize başka bir eklenti yüklemek istemiyorsanız, bir filtreye veya .htaccess dosyanıza bir kod ekleyerek xmlrpc.php’yi devre dışı bırakabilirsiniz. Her iki yönteme de bakalım.

Filtre aracılığıyla xmlrpc.php dosyasını devre dışı bırakma

Buradaki bir seçenek, xmlrpc.php’yi devre dışı bırakmak için xmlrpc_enabled filtresini kullanmaktır. Bu işlevi bir eklentiye ekleyin ve sitenizde etkinleştirin:

add_filter ('xmlrpc_enabled', '__return_false');

Bunu tema işlevleri dosyanıza ekleyebilirsiniz, ancak bir eklenti yazmak daha iyi bir uygulamadır.

Diğer seçenek, Apache kullanan barındırma sağlayıcılarında bulunan .htaccess dosyanızı, sitenizin sunucusuna FTP veya cPanel aracılığıyla bağlanarak düzenlemekle ilgilidir.

.htacess Dosyası ile xmlrpc.php’yi devre dışı bırakın

.htaccess dosyanıza şu kodu ekleyin:

<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>

Xmlrpc.php Ne Zaman Etkinleştirmelisiniz?

WordPress sitenizde xmlrpc.php’yi etkinleştirmeniz veya tamamen devre dışı bırakmamanız gereken bazı durumlar olabilir.

Bunlar:

  • REST API’sini çalıştırmıyorsunuz (önerilmez, ancak bazı durumlarda gereklidir), ancak WordPress siteniz ve diğer sistemler arasında iletişim kurmanız gerekir.
  • WordPress’i 4.4 veya daha yeni bir sürüme güncelleyemezsiniz, bu nedenle REST API’sına erişiminiz yoktur. Bunun nedeni, barındırma kurulumunuzdaki kısıtlamalar veya tema veya eklentilerin uyumsuzluğu olabilir.
  • WP REST API’sine erişemeyen ancak XML-RPC’ye erişebilen harici bir uygulama ile çalışıyorsunuz.

Bu kadar! Bunların hiçbiri, XML-RPC belirtimini açık tutmak için özellikle iyi nedenler değildir.