Hushfort

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

  1. 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.

    situsanda.com/xmlrpc.php menjawab: XML-RPC server accepts POST requests only
  2. 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.

    Pindai Permukaan di Ringkasan Hushfort: XML-RPC terbuka, system.multicall juga terbuka, ditambah daftar pengguna REST dan pemindaian penulis yang membocorkan nama pengguna demo-admin
  3. 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.

    Penguatan Permukaan diaktifkan, dengan XML-RPC diatur ke Nonaktifkan login, pertahankan pingback (disarankan)
  4. 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."

    Pindai Permukaan setelah perbaikan: XML-RPC, daftar pengguna REST, pemindaian penulis, dan daftar penulis di sitemap semuanya tertutup

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?

Untuk sebagian besar situs, ya. WordPress modern memakai REST API untuk editor blok dan sebagian besar integrasi. XML-RPC masih dipakai oleh Jetpack, aplikasi seluler resmi WordPress, dan beberapa alat penerbitan lama, jadi periksa dulu alat-alat itu.

Apakah menyembunyikan halaman login juga menyembunyikan xmlrpc.php?

Tidak. xmlrpc.php menerima nama pengguna dan kata sandi secara mandiri, jadi penyerang masih bisa mencoba di sana setelah Anda menyembunyikan wp-login.php.

Apa itu system.multicall?

Metode XML-RPC yang menjalankan banyak panggilan dalam satu permintaan. Penyerang memakainya untuk mengirim ratusan tebakan kata sandi dalam satu permintaan, sehingga lolos dari batas yang menghitung jumlah permintaan.

Apakah menonaktifkan XML-RPC merusak pingback?

Memblokir seluruh file, ya. Menutup hanya login XML-RPC dan membiarkan metode pingback terbuka membuat pingback dan trackback tetap berfungsi.

Apakah filter xmlrpc_enabled mematikan XML-RPC sepenuhnya?

Tidak. Filter ini hanya menonaktifkan metode yang membutuhkan login. File-nya masih menjawab, dan panggilan pingback masih berjalan. Sering kali memang itu yang Anda inginkan, tetapi uji hasilnya.

Laporkan bug atau minta fitur

Pesan Anda langsung diterima tim yang membangun Hushfort.

Tentang apa?

Hanya dipakai untuk membalas Anda.

Data ini hanya kami pakai untuk membalas Anda. Privasi