XML-RPC là gì? Tại sao nên hạn chế sử dụng giao thức XML-RPC?

  • Monday 12/09/2022

XML-RPC, một trong những cơ chế của WordPress, được phát triển để chuẩn hóa giao tiếp giữa các hệ thống khác nhau. Điều này có nghĩa là các ứng dụng bên ngoài WordPress (chẳng hạn như các nền tảng blog khác và ứng dụng khách trên máy tính để bàn) có thể tương tác với WordPress.

XML-RPC

XMLRPC.PHP là một tính năng quan trọng trong WordPress, có chức năng kích hoạt quá trình chỉnh sửa nội dung từ xa.

1. XML-RPC là gì?

XML-RPC là tính năng của WordPress để giúp truyền tải dữ liệu, với HTTP làm công cụ truyền và XML làm công cụ encode (mã hóa). Vì WordPress không phải là hệ thống đóng hoàn toàn nên tính năng này được tạo ra để khi WordPress cần giao tiếp với các hệ thống bên ngoài.

Ví dụ, bạn muốn đăng bài viết lên site từ điện thoại và không có máy tính bên cạnh. Bạn có thể dùng tính năng truy cập từ xa được kích hoạt bởi xmlrpc.php để đăng bài.

Chức năng chính mà xmlrpc.php kích hoạt là cho phép giao tiếp giữa điện thoại và site của bạn được thiết lập, thiết lập trackback và pingbacks từ các site khác và một số tính năng liên kết với plugin Jetpack.

2. Lý do XML-RPC từng được sử dụng phổ biến ?

Trong những năm trước đây, XMLRPC.PHP là một hệ thống được sử dụng tương đối phổ biến vì những tính năng đặc biệt của nó. Trong đó, nổi bật nhất là khả năng truy cập và chỉnh sửa nội dung trên WordPress mà không cần phải kết nối internet vì trước đây internet chưa phát triển như bây giờ nên việc truy cập mạng thường không mượt và mất nhiều thời gian.

Tính năng của hệ thống này là tạo nên một trang web offline được kết nối với trang web chính. Khi người dùng chỉnh sửa và đăng tải nội dung xong, chỉ cần kích hoạt XMLRPC.PHP, bài viết sẽ được đăng tải lên web.

Hiện nay với sự ra đời của những ứng dụng cho phép người dùng truy cập trang web bằng điện thoại ra đời cùng mạng lưới internet phát triển vượt trội, XMLRPC.PHP đã mất đi vị trí độc tôn và không còn được sử dụng phổ biến như trước đây nữa.

3. Ứng dụng của XML-RPC là gì?

XML-RPC

XML-RPC bao gồm có 2 phần chính: XML-RPC server và XML-RPC client

Trong WordPress, XML-RPC gồm có 2 phần chính: XML-RPC server và XML-RPC client:

  • XML-RPC server là một web server, có chức năng nhận thông tin đã được mã hoá từ XML-RPC client.
  • XML-RPC client: là hệ thống sử dụng XML để mã hóa tham số, và gửi nội dung XML đã được mã hoá đó vào XML-RPC server.

4. Cách kích hoạt XML-RPC trong WordPress

Để kích hoạt XML-RPC trong WordPress, bạn cần thực hiện 3 bước như sau:

Bước 1: Cài plugin “Control XML-RPC publishing

Bước 2: Trên WordPress, chọn Settings ->Write -> Remote publishing with XML-RPC -> Enabled

Bước 3: Nhấn Save changes để lưu thay đổi. Vậy là XML-RPC đã được kích hoạt.

5. WordPress XML-RPC Server

XML-RPC

Đăng ký hàm XML-RPC mới: Để tạo một hàm XML-RPC mới, cần thực hiện các bước như sau:

add_filter( 'xmlrpc_methods', 'add_xml_rpc_methods' );
function add_xml_rpc_methods( $methods ) {
$methods['frs.helloWorld'] = 'hello_world'; 
return $methods;
}

Ở ví dụ trên, chúng ta đăng ký hàm helloWorld thuộc namespace mới frs, và khai báo lời gọi hàm callback hello_worldcho hàm helloWorld.

Phần định nghĩa hàm callback. Xem ví dụ mẫu:

function hello_world($params){
global $wp_xmlrpc_server;
$arg1 = $params[1];
return "Hello ".$wp_xmlrpc_server->escape( $arg1 );
}

*Chú ý: Hàm cần trả về giá trị, giá trị này sẽ được lấy khi gọi hàm. Không sử dụng echo,print để xuất chuỗi ra màn hình.

Xóa hàm RPC: Phương pháp xóa hàm RPC cũng tương tự như đăng ký hàm:

Tương tự như cách tạo hàm, sử dụng xmlrpc_methods để xóa các hàm không mong muốn. Thêm vào functions.php

function mynamespace_remove_xmlrpc_methods( $methods ) {
unset( $methods['demo.addTwoNumbers'] );
unset( $methods['frs.helloWorld'] );
return $methods;
}
add_filter( 'xmlrpc_methods', 'mynamespace_remove_xmlrpc_methods');

6. Tại sao không nên sử dụng XML-RPC?

XML-RPC

Trước đây, XML-RPC được sử dụng phổ biến. Nhưng ngày nay, hệ thống này dần xuất hiện những hạn chế, cùng với đó là sự xuất hiện của những phần mềm mới, mà XML-RPC không còn được khuyến khích sử dụng.

Khuyết điểm lớn nhất của XML-RPC là độ bảo mật kém. Dẫn đến việc các hacker có thể tấn công trang web dễ dàng. Bằng việc sử dụng file xmlrpc.php, hệ thống tin tặc có thể dùng nhiều phương pháp khác nhau để có được mật khẩu truy cập trang web. Thậm chí, với hệ thống này, quá trình tấn công DdoS được thực hiện tương đối thường xuyên, khiến trang web hay bị down.

Vì thế khi sử dụng WordPress, nhiều người dùng thường vô hiệu hoá chức năng này để tránh tình trạng bị hacker xâm nhập thông qua XML-RPC.

Hiện nay, WordPress API đang trong giai đoạn thử nghiệm. Và hệ thống API cũng có chức năng tương tự như XML-RPC, được hình thành thông qua việc code trực tiếp vào trong WordPress core.

Sự xuất hiện của API dự đoán sẽ hoàn toàn thay thế cho XML-RPC trong tương lai bởi tính năng bảo mật tốt cũng như khắc phục được mọi hạn chế mà XML-RPC đang mắc phải.

7. Cách nhận biết XML-RPC.PHP đang bị tấn công

XML-RPC

Việc kích hoạt XML-RPC sẽ khiến trang web của bạn dễ dàng bị tấn công hơn

Để nhận biết website của bạn đang bị tấn công, cách đơn giản nhất chính là kiểm tra tệp tin access_log. Nếu phát hiện số lượng người truy cập tăng lên một cách đột biến thì đây chính là dấu hiệu cho việc trang web của bạn đang bị tấn công qua XML-RPC.

Ví dụ như:

XML-RPC

Để giải quyết tình trạng này, một phương pháp hữu hiệu nhất chính là vô hiệu hóa XML-RPC đi. Vì khi cài đặt WordPress, XML-RPC đã được cài đặt sẵn nên người dùng cần thực hiện một vài thao tác để tắt nó đi. Trên thực tế, có rất nhiều cách để tiến hành vô hiệu hóa giao thức này.

8. Cách vô hiệu hóa XML-RPC

8.1 Vô hiệu XMLRPC.PHP bằng Plugins

Bước 1: Truy cập WordPress dashboard

Bước 2: Di chuyển đến mục Plugins -› Add New Disable XML-RPC -› plugin Disable XML-RPC

Bước 3: Kích hoạt plugin Disable XML-RPC để vô hiệu hoá XML-RPC

XML-RPC

Tuy nhiên, một vấn đề có thể xảy ra khi tiến hành vô hiệu hoá XML-RPC bằng phương pháp này đó là khi xảy ra trường hợp những plugin khác cũng đang dùng một yếu tố của XML-RPC. Vì vậy, việc vô hiệu hóa plugin có thể sẽ khiến trang web của bạn ngừng hoạt động.

Để giải quyết tình trạng này, bạn có thể sử dụng phương pháp sau:

  • Cài đặt plugin Stop XML-RPC Attack để ngưng XML-RPC nhưng vẫn cho phép các plugin như Jetpack… tự động truy cập vào file xmlrpc.php.
  • Cài đặt plugin Control XML-RPC Publishing, đây là công cụ tự động kích hoạt hoặc vô hiệu hoá xmlrpc.php.
  • Cài đặt plugin iThemes Security. Bạn có thể tắt tại mục Security -> Settings -> WordPress Tweak và chọn Disable XML-RPC.

8.2 Sửa file .htaccess

Bước 1: Truy cập tập tin .htaccess ở thư mục gốc của trang web (Trong trường hợp máy tính mua Web Hosting hoặc thuê máy chủ có cài đặt Apache)

Bước 2: Chèn đoạn code sau vào tệp tin:

# DISABLE XML RPC

<Files xmlrpc.php>

Order Deny,Allow

Deny from all

</Files>

#END

8.3 Sửa file trên Nginx

Bước 1: Truy cập tập tin cấu hình domain trên Nginx.

Bước 2: Chèn đoạn code sau vào tệp tin trên:

location = /xmlrpc.php {

deny all;

access_log off;

log_not_found off;

}

Bước 3: Chọn service nginx restart để khởi động lại Nginx.

Bài viết trên đã chia sẻ những thông tin đầy đủ về XML-RPC. Hy vọng bài viết sẽ giúp bạn hiểu được khái niệm XML-RPC cũng như nguyên nhân tại sao bạn nên vô hiệu hóa XML-RPC trong WordPress tránh tình trạng bị đánh cắp thông tin dữ liệu trên trang web.


P.A Việt Nam cung cấp đa dạng các Plan Hosting WordPress đáp ứng yêu cầu của khách hàng
WordPress Hosting phổ thông
WordPress Hosting chất lượng cao
WordPress VIP

Tham khảo các bài viết liên quan đến wordpress hosting : https://kb.pavietnam.vn/category/phan-mem/open-source/wordpress

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/

Rate this post