Panduan Lengkap tentang xmlrpc.php di WordPress (Apa Artinya, Risiko Keamanan, Cara Menonaktifkannya)

Diterbitkan: 2020-07-06

Spesifikasi WordPress XML-RPC dikembangkan untuk menstandardisasi komunikasi antara sistem yang berbeda, yang berarti bahwa aplikasi di luar WordPress (seperti platform blogging lain dan klien desktop) dapat berinteraksi dengan WordPress.

Spesifikasi ini telah menjadi bagian dari WordPress sejak awal dan melakukan pekerjaan yang sangat berguna. Tanpa itu, WordPress akan berada dalam silonya sendiri, terpisah dari internet lainnya.

Namun, xmlrpc.php memiliki kelemahan. Itu dapat memperkenalkan kerentanan ke situs WordPress Anda dan sekarang telah digantikan oleh REST API WordPress, yang melakukan pekerjaan yang jauh lebih baik untuk membuka WordPress ke aplikasi lain.

Dalam posting ini, kami akan menjelaskan apa itu xmlrpc.php, mengapa Anda harus menonaktifkannya, dan membantu Anda mengidentifikasi apakah itu berjalan di situs WordPress Anda.

Siap? Mari selami!

Apa itu xmlrpc.php?

XML-RPC adalah spesifikasi yang memungkinkan komunikasi antara WordPress dan sistem lain. Hal ini dilakukan dengan menstandarisasi komunikasi tersebut, menggunakan HTTP sebagai mekanisme transport dan XML sebagai mekanisme encoding.

XML-RPC mendahului WordPress: sudah ada dalam perangkat lunak blogging b2, yang dibuat untuk membuat WordPress pada tahun 2003. Kode di belakang sistem disimpan dalam file bernama xmlrpc.php , di direktori root situs. Dan itu masih ada, meskipun XML-RPC sebagian besar sudah ketinggalan zaman.

Di versi awal WordPress, XML-RPC dimatikan secara default. Tapi sejak versi 3.5, sudah diaktifkan secara default. Alasan utamanya adalah untuk mengizinkan aplikasi seluler WordPress untuk berbicara dengan instalasi WordPress Anda.

Jika Anda menggunakan aplikasi seluler WordPress sebelum versi 3.5, Anda mungkin ingat harus mengaktifkan XML-RPC di situs Anda agar aplikasi dapat memposting konten. Ini karena aplikasi tidak menjalankan WordPress itu sendiri; sebagai gantinya, itu adalah aplikasi terpisah yang berkomunikasi dengan situs WordPress Anda menggunakan xmlrpc.php.

Tapi itu bukan hanya aplikasi seluler yang digunakan untuk XML-RPC: itu juga digunakan untuk memungkinkan komunikasi antara WordPress dan platform blogging lainnya, itu mengaktifkan trackback dan pingback, dan itu mendukung plugin Jetpack yang menautkan WordPress yang dihosting sendiri situs ke WordPress.com.

Tetapi karena REST API diintegrasikan ke dalam inti WordPress, file xmlrpc.php tidak lagi digunakan untuk komunikasi ini. Sebaliknya, REST API digunakan untuk berkomunikasi dengan aplikasi seluler WordPress, dengan klien desktop, dengan platform blogging lainnya, dengan WordPress.com (untuk plugin Jetpack) dan dengan sistem dan layanan lain. Rentang sistem yang dapat berinteraksi dengan REST API jauh lebih besar daripada yang diizinkan oleh xmlrpc.php. Juga, ada lebih banyak fleksibilitas.

Karena REST API telah menggantikan XML-RPC, Anda sekarang harus menonaktifkan xmlrpc.php di situs Anda. Mari kita lihat mengapa.

Mengapa Anda Harus Menonaktifkan xmlrpc.php

Alasan utama mengapa Anda harus menonaktifkan xmlrpc.php di situs WordPress Anda adalah karena ia memperkenalkan kerentanan keamanan dan dapat menjadi target serangan.

Sekarang XML-RPC tidak lagi diperlukan untuk berkomunikasi di luar WordPress, tidak ada alasan untuk tetap mengaktifkannya. Itulah mengapa bijaksana untuk membuat situs Anda lebih aman dengan menonaktifkannya.

Jika xmlrpc.php adalah kewajiban keamanan dan tidak lagi berfungsi, mengapa tidak dihapus dari WordPress sama sekali?

Alasannya adalah karena salah satu fitur utama WordPress akan selalu kompatibel dengan versi sebelumnya. Jika Anda mengelola situs dengan baik, Anda akan tahu bahwa menjaga agar WordPress selalu terbarui, serta plugin atau tema apa pun, sangat penting.

Tetapi akan selalu ada pemilik situs web yang tidak mau atau tidak dapat memperbarui versi WordPress mereka. Jika mereka menjalankan versi yang mendahului REST API, mereka masih memerlukan akses ke xmlrpc.php.

Mari kita lihat kerentanan spesifik secara lebih rinci.

Serangan DDoS melalui Pingback XML-RPC

Salah satu fungsi yang xmlrpc.php aktifkan adalah pingback dan trackback. Ini adalah pemberitahuan yang muncul di komentar di situs Anda saat blog atau situs lain menautkan ke konten Anda.

Spesifikasi XML-RPC adalah yang memungkinkan komunikasi ini, tetapi itu telah digantikan oleh REST API (seperti yang sudah kita lihat).

Jika XML-RPC diaktifkan di situs Anda, peretas berpotensi memasang serangan DDoS di situs Anda dengan memanfaatkan xmlrpc.php untuk mengirim banyak pingback ke situs Anda dalam waktu singkat. Ini dapat membebani server Anda dan membuat situs Anda tidak berfungsi.

Serangan Brute Force melalui XML-RPC

Setiap kali xmlrpc.php membuat permintaan, ia mengirimkan nama pengguna dan kata sandi untuk otentikasi. Ini menghadirkan kewajiban keamanan yang signifikan dan merupakan sesuatu yang tidak dilakukan oleh REST API. Faktanya, REST API menggunakan OAuth yang mengirimkan token untuk otentikasi, bukan nama pengguna atau kata sandi.

Karena xmlrpc.php mengirimkan informasi otentikasi dengan setiap permintaan, peretas dapat menggunakannya untuk mencoba mengakses situs Anda. Serangan brute force seperti ini memungkinkan mereka untuk memasukkan konten, menghapus kode, atau merusak database Anda.

Jika penyerang mengirimkan cukup banyak permintaan ke situs Anda, masing-masing dengan pasangan nama pengguna dan sandi yang berbeda, ada kemungkinan mereka akhirnya dapat mengenai situs yang benar, memberi mereka akses ke situs Anda.

Itu sebabnya, jika Anda menjalankan WordPress versi terbaru, yang menggunakan REST API untuk berkomunikasi dengan sistem eksternal, Anda harus menonaktifkan xmlrpc.php . Itu tidak diperlukan dan bisa membuat situs Anda rentan.


Apakah xmlrpc.php Berjalan di Situs WordPress Anda?

Hal pertama yang perlu Anda lakukan adalah mengidentifikasi apakah xmlrpc.php berjalan di situs WordPress Anda.

Ini bukan kasus sederhana untuk memeriksa apakah file ada di sana: ini adalah bagian dari setiap instalasi WordPress dan akan tetap ada meskipun XML-RPC dinonaktifkan.

Untuk memeriksa apakah xmlrpc.php diaktifkan di situs Anda, gunakan Layanan Validasi XML-RPC WordPress. Ini akan memeriksa situs Anda dan memberi tahu Anda apakah xmlrpc.php diaktifkan.

Layanan Validasi XML-RPC WordPress
Layanan Validasi XML-RPC WordPress

Inilah hasil yang saya dapatkan ketika saya memeriksa situs ini di layanan.

Pemeriksaan Kinsta XML-RPC
Pemeriksaan Kinsta XML-RPC

Ini menunjukkan bahwa xmlrpc.php telah dinonaktifkan di kinsta.com. Jadi jika Anda menjalankan pemeriksaan dan menemukan bahwa xmlrpc.php masih diaktifkan di situs Anda, bagaimana cara mematikannya?

Cara Menonaktifkan xmlrpc.php

Ada tiga cara untuk menonaktifkan xmlrpc.php:

Mari kita lihat masing-masing satu per satu.

Cara Menonaktifkan xmlrpc.php dengan Plugin

Memasang plugin untuk menonaktifkan xmlrpc.php adalah cara termudah untuk melakukannya. Plugin Nonaktifkan XML-RPC akan menonaktifkannya sepenuhnya. Inilah cara Anda menggunakannya.

Titik awal saya adalah situs web saya sendiri, di mana xmlrpc.php diaktifkan. Anda dapat melihat ini melalui cek yang saya lakukan:

Situs web Rachel McCollin - cek XML-RPC
Situs web Rachel McCollin – cek XML-RPC

Instal plugin melalui layar Plugin Anda di admin WordPress, dan aktifkan.

Anda tidak perlu melakukan hal lain: mengaktifkan plugin akan menyebabkannya menonaktifkan XML-RPC. Sekarang jika saya menjalankan pemeriksaan di situs saya, saya mendapatkan hasil yang berbeda:

Situs web Rachel McCollin - pemeriksaan XML-RPC kedua
Situs web Rachel McCollin – pemeriksaan XML-RPC kedua

Sesederhana itu!

Nonaktifkan Pingback XML-RPC dengan Plugin

Tetapi bagaimana jika Anda ingin menonaktifkan beberapa aspek dari xmlrpc.php dan bukan yang lain? Plugin Nonaktifkan XML-RPC Pingback memungkinkan Anda menonaktifkan fungsionalitas pingback saja, artinya Anda masih memiliki akses ke fitur XML-RPC lain jika Anda membutuhkannya.

Plugin ini bekerja dengan cara yang sama seperti plugin Nonaktifkan XML-RPC: cukup instal, aktifkan, dan itu akan berfungsi.

Konfigurasikan XML-RPC dan Aktivasi REST API dengan Plugin

Jika Anda ingin kontrol yang lebih halus tentang bagaimana xmlrpc.php dan REST API dikonfigurasi di situs Anda, Anda dapat menginstal plugin REST XML-RPC Data Checker.

Setelah Anda menginstal dan mengaktifkan plugin ini, buka Pengaturan > REST XML-RPC Data Checker dan klik tab XML-RPC .

Pemeriksa Data XML-RPC REST
Pemeriksa Data XML-RPC REST

Ini memungkinkan Anda mengonfigurasi dengan tepat aspek mana dari xmlrpc.php yang aktif di situs Anda.

Butuh hosting yang sangat cepat, aman, dan ramah pengembang? Kinsta dibangun dengan mempertimbangkan pengembang WordPress dan menyediakan banyak alat dan dasbor yang kuat. Lihat rencana kami

Atau, Anda cukup mematikannya sama sekali. Dan jika Anda juga ingin mengontrol REST API, plugin memberi Anda tab lain untuk itu.

Cara Menonaktifkan xmlrpc.php Tanpa Plugin

Jika Anda lebih suka tidak menginstal plugin lain di situs Anda, Anda dapat menonaktifkan xmlrpc.php dengan menambahkan beberapa kode dalam filter, atau ke file .htaccess Anda. Mari kita lihat kedua metode tersebut.

Nonaktifkan xmlrpc.php melalui Filter

Opsi di sini adalah menggunakan filter xmlrpc_enabled untuk menonaktifkan xmlrpc.php. Tambahkan fungsi ini ke plugin dan aktifkan di situs Anda:

 add_filter( 'xmlrpc_enabled', '__return_false' );

Anda dapat menambahkan ini ke file fungsi tema Anda, tetapi praktik yang lebih baik adalah menulis plugin.

Opsi lainnya berkaitan dengan mengedit file .htaccess Anda, yang tersedia dengan penyedia hosting yang menggunakan Apache, dengan menghubungkan ke server situs Anda melalui FTP atau cPanel.

Nonaktifkan xmlrpc.php melalui File .htacess

Di file .htaccess Anda, tambahkan kode ini:

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

Pastikan Anda membuat salinan file lama sebelum melakukannya, untuk berjaga-jaga jika Anda mengalami masalah.

Minta Penyedia Hosting Anda Nonaktifkan xmlrpc.php

Atau, beberapa penyedia hosting akan menonaktifkan xmlrpc.php jika serangan terdeteksi.

Di Kinsta, ketika serangan melalui XML-RPC terdeteksi, potongan kode secara otomatis ditambahkan ke file Nginx.config:

 location ~* ^/xmlrpc.php$ { return 403; }

Ini akan menghasilkan kesalahan 403 dan menghentikan serangan di jalurnya.

Jika Anda melakukannya sendiri, sebaiknya gunakan salah satu metode di atas. Tetapi sebelum Anda melakukannya, selalu periksa dengan penyedia hosting Anda terlebih dahulu.

Kapan Anda Perlu Mengaktifkan xmlrpc.php?

Mungkin ada beberapa kesempatan di mana Anda perlu mengaktifkan xmlrpc.php di situs WordPress Anda atau ketika Anda tidak harus menonaktifkannya sepenuhnya.

Ini adalah:

  • Anda tidak menjalankan REST API (tidak disarankan, tetapi diperlukan dalam beberapa situasi) tetapi perlu berkomunikasi antara situs WordPress Anda dan sistem lain.
  • Anda tidak dapat memperbarui WordPress ke versi 4.4 atau lebih tinggi, jadi tidak memiliki akses ke REST API. Ini mungkin karena batasan dalam pengaturan hosting Anda (dalam hal ini saya akan mengubah penyedia hosting) atau ketidakcocokan tema atau plugin (dalam hal ini saya akan mengganti atau memperbaruinya).
  • Anda bekerja dengan aplikasi eksternal yang tidak dapat mengakses WP REST API tetapi dapat mengakses XML-RPC (dalam jangka panjang, saya sarankan memperbarui aplikasi itu atau beralih ke aplikasi yang kompatibel dengan REST).

Itu dia! Tak satu pun dari ini adalah alasan yang sangat baik untuk menjaga spesifikasi XML-RPC tetap aktif.

Satu-satunya alasan masih ada di WordPress adalah untuk kompatibilitas ke belakang dan Anda akan menggunakannya hanya jika Anda bekerja dengan sistem yang sudah ketinggalan zaman. Bagi siapa saja yang ingin memperbarui situs mereka dan bekerja dengan teknologi terbaru, menonaktifkan xmlrpc.php adalah cara yang harus dilakukan.

XML-RPC pernah menjadi bagian penting dari WordPress. Sekarang ini merupakan risiko keamanan - Panduan ini akan menunjukkan kepada Anda cara menonaktifkannya dengan tepat di situs Anda. Klik untuk Tweet

Ringkasan

Spesifikasi XML-RPC dikembangkan bahkan sebelum WordPress dibuat, sebagai sarana bagi WordPress untuk berkomunikasi dengan sistem dan aplikasi eksternal. Ini memiliki kelemahan keamanan yang melekat dan dapat membuat situs Anda rentan terhadap serangan.

Sekarang setelah REST API memungkinkan situs Anda berkomunikasi dengan aplikasi lain, Anda dapat menonaktifkan xmlrpc.php dengan aman. Jika Anda mengikuti langkah-langkah di atas, dengan menonaktifkannya Anda akan meningkatkan keamanan situs Anda.