Yanıtlar:
WordPress 3.5'ten beri bu seçenek ( XML-RPC
) varsayılan olarak etkindir ve WordPress'ten kapatma dashboard
özelliği ortadan kalkmıştır.
Bu kod pasajını kullanım için ekleyin functions.php
:
// Disable use XML-RPC
add_filter( 'xmlrpc_enabled', '__return_false' );
// Disable X-Pingback to header
add_filter( 'wp_headers', 'disable_x_pingback' );
function disable_x_pingback( $headers ) {
unset( $headers['X-Pingback'] );
return $headers;
}
Ne diyorsa yapsa da, bir site onu vurarak saldırı altında olduğunda yoğunlaşabilir. Dosyanızda
aşağıdaki kod parçasını kullanarak daha iyi olabilirsiniz .htaccess
.
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
Veya bunu xmlrpc.php
, NGINX sunucu bloğundan dosyaya erişimi devre dışı bırakmak için kullanın .
# nginx block xmlrpc.php requests
location /xmlrpc.php {
deny all;
}
Ayrıca, devre dışı bırakmanın mobil üzerinden girişleri etkileyebileceğini unutmayın. Eğer doğruysam WordPress mobil uygulamasının buna ihtiyacı var.
Kullanımı hakkında daha fazla bilgi için Kodeks'e bakınızXML-RPC
.
- Lütfen düzenlemeden / eklemeden önce daima dosyaları yedekleyin.
@Prosti, -Sen kesinlikle haklısın- RESTful API
WordPress için sunacak seçenekler hakkında !
Bunu söylemeyi unuttum. O zamanlar mümkün olmayan çekirdeğe ( WordPress sürüm 4.1 ) zaten entegre edilmiş olmalıydı . Ancak göründüğü gibi, WordPress 4.5'te çekirdek olacaktır.
Şu an için alternatif bu eklenti: WordPress REST API (Sürüm 2) Ayrıca WordPress için çekirdek olana
kadar kullanabilirsiniz Restful API
.
WordPress 4.5'in piyasaya sürülmesi için hedef tarih. (12 Nisan 2016 (+ 3w))
İlgilenenler
RESTful
için Stackoverflow'ta çok güzel bir topluluk wiki'si var.
X-Pingback
tek yazı / sayfa için başlık almak isteyenler için. Biz tamamen kaldırmak için başka bir filtre kullanmak gerekir: add_filter('pings_open', '__return_false', PHP_INT_MAX);
.
functions.php
temaları değiştirirken tüm etkilerini kaybedecek. function.php
sadece tasarım amacıyla, bir eklenti kullanın!
=
nginx conf kodunun ilk satırında eksik olan bir eşittir işareti ( ) var gibi görünüyor . Bu benim için çalıştı: location = /xmlrpc.php {
Htaccess dosyasını bilgisayar korsanlarından korumak için kullanıyoruz.
# BEGIN protect xmlrpc.php
<files xmlrpc.php>
order allow,deny
deny from all
</files>
# END protect xmlrpc.php
Web sunucunuzun yapılandırması yoluyla engelleme olanağınız varsa, @Charles'ın önerileri iyi.
Yalnızca php kullanarak devre dışı bırakabilirseniz, xmlrpc_enabled
filtre doğru yol değildir. Burada belgelenen gibi:
https://developer.wordpress.org/reference/hooks/xmlrpc_enabled/
yalnızca kimlik doğrulama gerektiren xml rpc yöntemlerini devre dışı bırakır.
Bunun yerine, xmlrpc_methods
tüm yöntemleri devre dışı bırakmak için filtreyi kullanın:
<?php
// Disable all xml-rpc endpoints
add_filter('xmlrpc_methods', function () {
return [];
}, PHP_INT_MAX);
Çalışıp çalışmadığını, katlama içeriğiyle xmlrpc.php dosyasına bir POST isteği göndererek çalışıp çalışmadığını test edebilirsiniz:
<methodCall>
<methodName>system.listMethods</methodName>
</methodCall>
Filtre çalışıyorsa, sadece 3 yöntem kalmalıdır:
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<string>system.multicall</string>
</value>
<value>
<string>system.listMethods</string>
</value>
<value>
<string>system.getCapabilities</string>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
hızlı bir şekilde curl ile test edebilirsiniz:
curl -X POST \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/xml' \
-d '<methodCall><methodName>system.listMethods</methodName></methodCall>' \
https://your-wordpress-site.com/xmlrpc.php
Yapılacak en iyi şey xmlrpc.php
, dosyanın kendisini silmek veya devre dışı bırakmak yerine, eklentili işlevleri devre dışı bırakmaktır. Dosyanın kendisi WordPress çekirdek güncellemelerinde değiştirilirken, bir eklenti çekirdek güncellemelerinin ardından ve temaları değiştirirseniz devre dışı bırakılmasını sağlar.
Farklı eklentiler için https://wordpress.org/plugins/search.php?q=disable+xml-rpc adresine bakın . Hepsinin küçük farklılıkları var.
Bu eklentiler, temanın functions.php
dosyasına eklenen veya order,allow deny
.htaccess'e bir kural ekleyen (diğer cevaplarda belirtildiği gibi) bir kural olarak aynı şeyi yapar ; fark, bir eklenti veya işlev olması xmlrpc.php
PHP üzerinden yapılan çağrıları devre dışı bırakır ve .htaccess'deki kural çalışır. web sunucusundaki mod_rewrite kullanarak (yani, Apache veya Nginx). Modern bir sunucuda PHP ve mod_rewrite kullanımı arasında kayda değer bir performans farkı yoktur.
WordPress'i IIS'de barındıran aşırı azınlık için benzer htaccess benzeri kısıtlamalar yapmak için IIS URL Yeniden Yazma modülünü kullanabilirsiniz. Aşağıdaki örnek, gerçek istemci IP'sinin X-Forwarded-For başlığında geldiğini, bilinen beyaz liste IP'sinin 55.55.555.555 olduğunu ve beyaz liste dışı IP'lere HTTP 404 ile yanıt vermek istediğinizi varsayar.
<rule name="wordpress-restrictions" enabled="true" stopProcessing="true">
<match url="(^xmlrpc.php)|(^wp-admin)|(^wp-login.php)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_X_FORWARDED_FOR}" pattern="(^55\.55\.555\.555$)" negate="true" />
</conditions>
<action type="CustomResponse" statusCode="404" subStatusCode="44" statusReason="File or directory not found" statusDescription="The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable." />
</rule>
İlk olarak, kodu add_filter('xmlrpc_enabled', '__return_false');
dosyaya functions.php
veya siteye özgü eklentiye koyabilirsiniz . Açıkça siteye belirli bir yere koymak, dosyayı düzenlemekten daha tavsiye edilir functions.php
.
Yakın zamanda, 6.3.12 sürümünden itibaren herhangi bir yere doğrudan erişimi engelleme olanağına sahip olan Wordfence'i yükledim. /Xmlrpc.php dosyasını, "Bu URL’lere erişen IP’leri hemen engelle" adlı yasaklı erişim IP’leri listesindeki Seçenekler sayfasına koymak, her 15 dakikada bir engellendiğini gösteriyor.
Bu aynı zamanda, farklı bir IP adresiyle tekrar tekrar gelen sinir bozucu botlardan kaçmak için bir URL'yi engelleyebilme avantajına sahiptir.
Geçerli işlemler için Apps tarafından xmlrpc.php kullanımına izin verip vermediğini bilmiyorum.
İlk başta sunucuda 504 Timeout ve 502 Bad Gateway hatası üreten bazı sorunlar yaşadım, ancak sorun çözüldü gibi görünüyor.
Sonuçtan çok etkilendim ve site Wordfence'ı kurmadan önce hacklendikten sonra ve her zaman WordPress ve eklentilerin en son sürümüne sahip olmasına rağmen değerli bir temizleme profili üretti.
/xmlrpc.php
Erişime giren IP'leri yasaklayan bir güvenlik kuralı eklemek , meşru trafiği engelleyebilecek gibi görünüyor. Geri tepme özelliği olan bir site sitenize bağlantılar sağladıysa, o site o URL’ye bir istek gönderir ve derhal engellenir ... sorunlara yol açabilir gibi görünüyor.