Apa itu xmlrpc.php, dan bagaimana cara menonaktifkan XML-RPC di WordPress?
Oleh Eureka Studio · Diperbarui
Jawaban singkat
XML-RPC memungkinkan aplikasi masuk melalui xmlrpc.php, pintu terpisah yang tidak ikut tertutup saat wp-login.php disembunyikan. Menonaktifkannya aman, kecuali Anda memakai Jetpack atau aplikasi seluler WordPress. Blokir file itu di .htaccess, tambahkan filter xmlrpc_enabled, atau gunakan plugin yang menutup login XML-RPC sambil mempertahankan pingback. Lalu uji hasilnya.
Langkah-langkah
1Langkah 1
Periksa apakah xmlrpc.php menjawab
Buka situsanda.com/xmlrpc.php. Jika Anda melihat "XML-RPC server accepts POST requests only.", berarti pintunya terbuka.
2Langkah 2
Pahami mengapa ini penting
Pindai Permukaan Hushfort benar-benar mencobanya. Pada situs yang terbuka, fitur ini melaporkan bahwa kata sandi bisa dicoba dengan melewati jalur login tersembunyi, dan bahwa system.multicall memungkinkan satu permintaan membawa ratusan percobaan.

3Langkah 3
Pilih seberapa rapat menutupnya
Buka Hushfort → Penguatan Permukaan dan aktifkan Aktifkan penguatan permukaan. XML-RPC dimulai pada "Nonaktifkan login, pertahankan pingback (disarankan)", yang cocok untuk sebagian besar situs. "Nonaktifkan sepenuhnya" paling ketat, tetapi menghentikan Jetpack dan aplikasi seluler resmi. Tekan Simpan Perubahan.

4Langkah 4
Uji bahwa login melalui XML-RPC ditolak
Kembali di Ringkasan, tekan Pindai ulang. Baris XML-RPC sekarang seharusnya berbunyi "Login dinonaktifkan — percobaan kata sandi ditolak, pingback tetap berfungsi."

Untuk menonaktifkan XML-RPC di WordPress, blokir xmlrpc.php di server, tambahkan filter xmlrpc_enabled, atau gunakan plugin yang menutup login XML-RPC sambil mempertahankan pingback. Ini aman kecuali Anda memakai Jetpack atau aplikasi seluler WordPress. Di Hushfort Security, plugin keamanan WordPress gratis, Pindai Permukaan menunjukkan apakah XML-RPC terbuka; penutupnya, Kunci Pintu Belakang, ada di Hushfort Pro.
Mengapa ini penting
XML-RPC adalah antarmuka kendali jarak jauh lama milik WordPress. Sebelum REST API ada, inilah
cara editor desktop dan aplikasi seluler menerbitkan pos. Antarmuka ini masih disertakan di
setiap situs WordPress, di /xmlrpc.php, dan masih menerima nama pengguna dan kata sandi di
setiap permintaan.
Itu menjadikannya pintu login kedua. Menyembunyikan wp-login.php tidak menyentuhnya. Kode
pembatas login yang hanya mengawasi formulir login tidak melihatnya. Dan dengan
system.multicall, satu permintaan HTTP bisa membawa ratusan tebakan kata sandi. Batas yang
menghitung permintaan hanya melihat satu percobaan, padahal ada lima ratus.
Ini bukan teori. Kami membangun lapisan ini setelah sebuah toko terus menerima percobaan kata sandi melalui XML-RPC, padahal halaman login-nya sudah disembunyikan.
Apakah Anda memakai XML-RPC? Kemungkinan tidak, jika tidak satu pun dari ini berlaku bagi Anda:
- Anda menghubungkan situs ke Jetpack.
- Anda menerbitkan atau memoderasi dari aplikasi seluler resmi WordPress.
- Anda memakai alat blogging desktop lama, atau layanan yang meminta nama pengguna dan kata sandi WordPress Anda (bukan kata sandi aplikasi) untuk memposting atas nama Anda.
- Anda mengandalkan pingback dari blog lain.
Jika ragu, tutup login saja dan pertahankan pingback. Itu menghilangkan risiko tebakan kata sandi dan membiarkan bagian yang tidak berbahaya tetap ada. Anda selalu bisa memperketatnya nanti.
Kesalahan umum
- Menyembunyikan login lalu berhenti di situ. Tebakan kata sandi tinggal berpindah ke
xmlrpc.php. - Memblokir seluruh file tanpa memeriksa. Jetpack dan aplikasi seluler resmi WordPress terhubung melalui XML-RPC. Jika Anda memakainya, tutup hanya metode login, atau uji dengan saksama.
- Memercayai tombol tanpa menguji. Beberapa cara masih membiarkan sebagian XML-RPC menjawab. Selalu periksa hasilnya dengan permintaan sungguhan (lihat langkah 4, atau cek apa saja yang terbuka di situs Anda).
- Melupakan lapisan cache. Jika aturan CDN sudah memblokir
xmlrpc.php, pengaturan di tingkat WordPress tidak akan menunjukkan efek apa pun. Itu tidak masalah; cukup ketahui lapisan mana yang bekerja.
Tanpa plugin
Opsi 1: filter xmlrpc_enabled. Tambahkan ini ke plugin must-use kecil
(wp-content/mu-plugins/no-xmlrpc-login.php) atau ke functions.php child theme Anda:
<?php
add_filter( 'xmlrpc_enabled', '__return_false' );
Ini menonaktifkan metode XML-RPC yang membutuhkan login. Pingback tetap berfungsi karena tidak
membutuhkannya. Filter ini sendiri tidak menghapus system.multicall, dan file-nya masih
menjawab permintaan. Untuk sekalian membuang metode multicall:
<?php
add_filter( 'xmlrpc_methods', function ( $methods ) {
unset( $methods['system.multicall'] );
return $methods;
} );
Opsi 2: blokir file di server. Di Apache, dalam .htaccess:
<Files xmlrpc.php>
Require all denied
</Files>
Di Nginx: location = /xmlrpc.php { deny all; }. Ini opsi paling ketat dan tidak membebani
server sama sekali, tetapi juga mematikan pingback, Jetpack, dan aplikasi seluler, serta berada
di luar WordPress, sehingga mudah terlupa saat Anda pindah hosting.
Jika ada yang salah
- Jetpack menampilkan kesalahan koneksi. Jetpack membutuhkan XML-RPC. Ganti dari "Nonaktifkan sepenuhnya" ke "Nonaktifkan login, pertahankan pingback", atau hapus aturan server Anda.
- Aplikasi seluler WordPress tidak bisa masuk. Penyebabnya sama. Gunakan browser di ponsel, atau izinkan login XML-RPC dan andalkan batas login ditambah autentikasi dua faktor.
- Alat penerbitan berhenti memposting. Periksa apakah alat itu memakai XML-RPC. Sebagian besar alat modern sudah beralih ke REST API dengan kata sandi aplikasi.
Dengan Hushfort
Kunci Pintu Belakang adalah bagian dari Hushfort Pro. Pindai Permukaan, yang menunjukkan apakah XML-RPC terbuka, ada di plugin gratis.
Kunci Pintu Belakang adalah bagian dari lapisan Penguatan Permukaan Hushfort. Fitur ini memberi Anda empat pilihan:
- Nonaktifkan login, pertahankan pingback (disarankan): tebakan kata sandi melalui XML-RPC menjadi mustahil, sementara pingback dan trackback tetap berfungsi. Cocok untuk situs toko.
- Nonaktifkan sepenuhnya: opsi paling ketat. Jetpack dan aplikasi seluler resmi tidak bisa terhubung.
- Nonaktifkan system.multicall saja: menutup tebakan massal, membiarkan sisanya.
- Jangan ubah: bawaan WordPress.
Setelah itu, Pindai Permukaan memeriksa hasilnya dengan permintaan sungguhan, sehingga Anda
melihat apa yang dilihat orang luar. Perlindungan Beban juga menghargai permintaan
xmlrpc.php lebih mahal daripada tampilan halaman biasa, sehingga sisa gangguan apa pun
melambat.
Pertanyaan umum
Apakah aman menonaktifkan XML-RPC di WordPress?
Apakah menyembunyikan halaman login juga menyembunyikan xmlrpc.php?
Apa itu system.multicall?
Apakah menonaktifkan XML-RPC merusak pingback?
Apakah filter xmlrpc_enabled mematikan XML-RPC sepenuhnya?
Panduan terkait
Bagaimana cara cek keamanan WordPress dan melihat apa saja yang terbuka di situs saya?
Cek keamanan situs WordPress seperti bot melakukannya. Lima permintaan menunjukkan apakah login, XML-RPC, dan nama pengguna terbuka, serta cara menutupnya.
Lihat langkah-langkahnyaBagaimana cara membatasi percobaan login di WordPress untuk mencegah brute force?
Hentikan serangan brute force di WordPress dengan mengunci IP setelah beberapa kali login gagal. Pengaturan, kode manual, dan celah yang wajib ditutup.
Lihat langkah-langkahnyaBagaimana cara mengganti URL login WordPress (wp-login.php dan wp-admin)?
Ganti URL login WordPress dan sembunyikan wp-admin dalam lima langkah aman. Uji sebelum keluar, dan ketahui cara masuk kembali jika Anda lupa alamatnya.
Lihat langkah-langkahnya
