Jaki jest najlepszy sposób na wyeliminowanie pliku xmlrpc.php z WordPress, gdy go nie potrzebujesz?
źródło
Jaki jest najlepszy sposób na wyeliminowanie pliku xmlrpc.php z WordPress, gdy go nie potrzebujesz?
Od wersji WordPress 3.5 ta opcja ( XML-RPC
) jest domyślnie włączona, a możliwość wyłączenia jej z WordPress dashboard
zniknęła.
Dodaj ten fragment kodu do użytku w 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;
}
Chociaż robi to, co mówi, może stać się intensywne, gdy witryna jest atakowana, uderzając w nią.
Lepiej użyj poniższego fragmentu kodu w swoim .htaccess
pliku.
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
Lub użyj tego, aby wyłączyć dostęp do xmlrpc.php
pliku z bloku serwera NGINX.
# nginx block xmlrpc.php requests
location /xmlrpc.php {
deny all;
}
Pamiętaj, że wyłączenie może mieć również wpływ na logowanie za pośrednictwem telefonu komórkowego. Jeśli mam rację, aplikacja mobilna WordPress tego potrzebuje.
Zobacz Codex, aby uzyskać więcej informacji na temat korzystania zXML-RPC
.
- Przed edycją / dodaniem należy zawsze wykonać kopię zapasową pliku (ów).
@Prosti, -Masz absolutną rację- co do opcji, które RESTful API
zaoferują WordPress!
Zapomniałem o tym wspomnieć. Powinien już był zintegrowany z rdzeniem ( WordPress wersja 4.1 ), co nie było wówczas możliwe. Ale jak się wydaje, będzie podstawą w WordPress 4.5.
Alternatywą dla tej chwili jest ta wtyczka: WordPress REST API (wersja 2)
Możesz jej używać do momentu, gdy Restful API
jest także rdzeniem WordPress.
Docelowa data wydania WordPress 4.5. (12 kwietnia 2016 r. (+ 3 w))
Dla tych, którzy są zainteresowani
RESTful
, na Stackoverflow jest bardzo fajna wiki społeczności.
X-Pingback
nagłówek dla pojedynczego posta / strony. Musimy użyć innego filtru, aby go usunąć całkowicie:add_filter('pings_open', '__return_false', PHP_INT_MAX);
.functions.php
spowoduje utratę wszystkich efektów przy zmianie motywów.function.php
służy wyłącznie do celów projektowych, użyj wtyczki!=
w pierwszym wierszu kodu conf nginx brakuje znaku równości ( ). To zadziałało dla mnie:location = /xmlrpc.php {
Jeśli masz możliwość zablokowania go za pomocą konfiguracji serwera internetowego, sugestie @Charles są dobre.
Jeśli możesz go wyłączyć tylko za pomocą php,
xmlrpc_enabled
filtr nie jest właściwy. Jak udokumentowano tutaj: https://developer.wordpress.org/reference/hooks/xmlrpc_enabled/ wyłącza tylko metody xml rpc wymagające uwierzytelnienia.Zamiast tego użyj
xmlrpc_methods
filtra, aby wyłączyć wszystkie metody:Możesz sprawdzić, czy działa, wysyłając żądanie POST do pliku xmlrpc.php z następującą treścią:
Jeśli filtr działa, powinny pozostać tylko 3 metody:
możesz go szybko przetestować za pomocą curl:
źródło
Używamy pliku htaccess, aby chronić go przed hakerami.
źródło
Najlepiej jest wyłączyć
xmlrpc.php
funkcje za pomocą wtyczki zamiast usuwać lub wyłączać sam plik. Sam plik zostanie zastąpiony przy podstawowych aktualizacjach WordPress, a wtyczka sprawi, że będzie wyłączony po podstawowych aktualizacjach i po zmianie motywów.Zobacz https://wordpress.org/plugins/search.php?q=disable+xml-rpc dla różnych wtyczek. Wszystkie mają niewielkie różnice.
Wtyczki te działają tak samo, jak funkcja dodana do
functions.php
pliku motywu lub dodającaorder,allow deny
regułę do .htaccess (jak opisano w innych odpowiedziach), z tą różnicą, że wtyczka lub funkcja wyłącza wywołaniaxmlrpc.php
przez PHP, a reguła w .htaccess działa poprzez wykorzystanie mod_rewrite na serwerze internetowym (tj. Apache lub Nginx). Nie ma znaczącej różnicy w wydajności między używaniem PHP i mod_rewrite na nowoczesnym serwerze.źródło
Dla skrajnej mniejszości, która hostuje WordPress w IIS, możesz użyć modułu Przepisz URL IIS, aby wprowadzić podobne ograniczenia podobne do htaccess. W poniższym przykładzie założono, że prawdziwy adres IP klienta przychodzi w nagłówku X-Forwarded-For, znany adres IP na białej liście to 55.55.555.555 i że użytkownik chce odpowiedzieć HTTP 404 na adresy IP niebędące białymi listami.
źródło
W pierwszy sposób możesz wstawić kod
add_filter('xmlrpc_enabled', '__return_false');
do plikufunctions.php
lub wtyczki specyficznej dla strony. Wyraźne umieszczenie go w witrynie jest bardziej zalecane niż edycja plikufunctions.php
.i inne sposoby na wyeliminowanie xmlrpc
źródło
Niedawno zainstalowałem Wordfence, który od wersji 6.3.12 ma możliwość blokowania bezpośredniego dostępu do dowolnej lokalizacji. Umieszczenie /xmlrpc.php na stronie Opcje na liście adresów IP zabronionego dostępu „Natychmiast blokuj adresy IP, które uzyskują dostęp do tych adresów URL” pokazuje teraz, że jedna próba jest blokowana co około 15 minut.
Ma to również tę zaletę, że może zablokować adres URL, aby uciec od tych brzydkich botów, które wracają z innym adresem IP raz za razem.
Nie wiem, czy zezwala na użycie pliku xmlrpc.php przez aplikacje do prawidłowych operacji.
Miałem pewne problemy z produkcją błędów 504 Limit czasu i 502 Bad Gateway na serwerze, ale wygląda na to, że ustąpił.
Jak na razie jestem pod dużym wrażeniem i stworzył on cenny profil czyszczenia po zhakowaniu witryny przed zainstalowaniem Wordfence i pomimo posiadania zawsze najnowszej wersji WordPress i wtyczek.
Wordfence https://www.wordfence.com/
źródło
/xmlrpc.php
do reguły bezpieczeństwa zakazującej dostępu do adresów IP wydaje się, że może blokować legalny ruch. Jeśli witryna z włączonymi linkami pingback do Twojej witryny, wyśle żądanie do tego adresu URL i natychmiast zostanie zablokowane ... wygląda na to, że może to powodować problemy.używam dla Nginx tego małego kodu i działa w 100%
źródło