XML-RPC là một giao thức giúp WordPress kết nối với thế giới bên ngoài, cho phép người dùng quản lý nội dung một cách linh hoạt và hiệu quả hơn. Cùng Terus tìm hiểu tại sao một công cụ như vậy nhưng lại khuyên là không nên dùng nữa qua bài viết này.

XML-RPC Là Gì? Lý Do Không Nên Sử Dụng XML-RPC Nữa

I. XML-RPC là gì?

XML-RPC là một công cụ mạnh mẽ, cho phép bạn quản lý nội dung WordPress từ xa và kết nối với các hệ thống bên thứ ba, mang đến nhiều tiện ích cho người dùng, tuy nhiên bạn cần lưu ý đến các vấn đề về bảo mật.

Với tính năng XML-RPC, WordPress trở nên linh hoạt hơn bao giờ hết, cho phép người dùng quản lý website mọi lúc mọi nơi, từ đó tăng hiệu quả làm việc và tiết kiệm thời gian.

II. Lý do XMLRPC từng rất thông dụng

Trước đây, khi kết nối internet còn hạn chế, XMLRPC.PHP đã trở thành một công cụ hữu ích cho phép người dùng quản lý nội dung WordPress một cách linh hoạt, ngay cả khi không có kết nối mạng ổn định.

Hệ thống cho phép bạn làm việc offline một cách hiệu quả, đồng thời đảm bảo sự đồng bộ hóa dữ liệu với trang web chính thông qua file XMLRPC.PHP, giúp tiết kiệm thời gian và tăng năng suất làm việc.

Với sự phổ biến của smartphone và ứng dụng di động, cùng với sự phát triển mạnh mẽ của mạng internet, XML-RPC.PHP không còn là lựa chọn tối ưu cho các ứng dụng hiện đại.

III. Ứng dụng của XMLRPC là gì?

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

Cách kích hoạt XMLRPC trong WordPress

Hướng dẫn cách cài XMLRPC

  1. Cài plugin “Control XMLRPC publishing
  2. Trên WordPress, chọn Settings ->Write -> Remote publishing with XMLRPC -> Enabled
  3. Nhấn Save changes để lưu thay đổi. Vậy là XMLRPC đã được kích hoạt.

WordPress XMLRPC Server

add_filter( 'xmlrpc_methods', 'add_xml_rpc_methods' );

function add_xml_rpc_methods( $methods ) {

$methods['frs.helloTerus] = 'hello_terus'; 

return $methods;

}

Chúng ta đã tạo hàm helloTerus trong namespace frs và gọi lại hàm này thông qua callback hello_terus.

Hàm cần được thiết kế để trả về một kết quả cụ thể. Thay vì in trực tiếp ra màn hình, hãy sử dụng câu lệnh return để truyền giá trị đó ra ngoài. Việc xóa hàm RPC cũng tương tự như cách tạo hàm, bằng cách sử dụng hàm xmlrpc_methods.

function mynamespace_remove_xmlrpc_methods( $methods ) {

unset( $methods['demo.addTwoNumbers'] );

unset( $methods['frs.helloTerus'] );

return $methods;

}

add_filter( 'xmlrpc_methods', 'mynamespace_remove_xmlrpc_methods');

XMLRPC Client

Tạo lớp xử lý gọi hàm từ XMLRPC Server

/*create XML-RPC PHP client*/

class XMLRPC_Client {

  private $url;

  function __construct( $url ) {

    $this->url = $url;

  }

  public function call() {

    $params = func_get_args();

    $method = array_shift( $params );

    $post = xmlrpc_encode_request( $method, $params );

    $ch = curl_init();

    curl_setopt( $ch, CURLOPT_URL,            $this->url );

    curl_setopt( $ch, CURLOPT_POST,           true );

    curl_setopt( $ch, CURLOPT_POSTFIELDS,     $post );

    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

    $response = curl_exec( $ch );

    $response_code = curl_getinfo( $ch, CURLINFO_HTTP_CODE );

    $curl_errorno = curl_errno( $ch );

    $curl_error   = curl_error( $ch );

    curl_close( $ch );

    if ( $curl_errorno != 0 ) {

      die( "Curl ERROR: {$curl_errorno} - {$curl_error}n" );

    }

    if ( $response_code != 200 ) {

      die( "ERROR: non-200 response from server: {$response_code} - {$response}n" );

    }

    return xmlrpc_decode( $response );

  }

}

Gọi hàm RPC

  1. Kết nối tới XMLRPC Server
  2. Truy cập XMLRPC_Client
  3. Tạo instance trên XMLRPC_Client
  4. Dùng hàm “//call method ” để tiến hành gọi hàm

$client = new XMLRPC_Client( "http://127.0.0.1:81/wordpress/xmlrpc.php" );

$available_methods = $client->call( 'system.listMethods' );

print_r( $available_methods );

Lợi ích của XMLRPC là bạn có thể gọi nhiều hàm trên một kết nối XMPRPC, như ở đây chúng ta có thể gọi tiếp hàm demo.sayTerus .

$test= $client->call( 'demo.sayTerus' );

print_r($test);

IV. Lý do không còn nên sử dụng XMLRPC

Sự phát triển không ngừng của công nghệ đã khiến XMLRPC trở nên lỗi thời và tiềm ẩn nhiều rủi ro bảo mật. Vì vậy, việc chuyển đổi sang các giải pháp hiện đại hơn là điều cần thiết để đảm bảo sự an toàn và hiệu quả của hệ thống.

XML-RPC tiềm ẩn nhiều rủi ro bảo mật, khiến website dễ bị tấn công bởi hacker. Các cuộc tấn công như brute-force vào mật khẩu hoặc DDoS có thể xảy ra thường xuyên, gây ảnh hưởng nghiêm trọng đến hoạt động của website.

Nhằm ngăn chặn các cuộc tấn công từ hacker qua lỗ hổng XML-RPC, người dùng WordPress thường vô hiệu hóa tính năng này.

Cách mà Wordpress đã làm để khắc phục nhược điểm này của XMLRPC

WordPress API hiện đang trong giai đoạn thử nghiệm và phát triển. Với chức năng tương tự XML-RPC, API này hứa hẹn sẽ mở ra nhiều khả năng mới cho việc tùy chỉnh và mở rộng WordPress.

Với sự cải tiến và xuất hiện của API, tôi tin rằng sẽ là sự thay thế hoàn hảo cho XMLRPC, khắc phục được toàn bộ nhược điểm của XMLRPC

V. Nhận biết XMLRPC.PHP đang bị tấn công

Như tôi đã có đề cập cho bạn là XMPRPC rất dễ bị tấn công và cách nhận biết dễ nhất là bạn kiểm tra tập tin access_log. Sự gia tăng đột biến lượt truy cập, đặc biệt là từ các IP lạ, có thể là dấu hiệu cho thấy website đang bị tấn công qua lỗ hổng XML-RPC.

Ví dụ như:

Để 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 XMLRPC đi. Vì khi cài đặt WordPress, XMLRPC đã đượ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.

VI. Cách tắt XMLRPC

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

  1. Truy cập WordPress dashboard 
  2. Di chuyển đến mục Plugins -› Add New Disable XMLRPC -› plugin Disable XMLRPC
  3. Kích hoạt plugin Disable XMLRPC để vô hiệu hoá XMLRPC

Việc vô hiệu hóa XML-RPC bằng plugin có thể gây ra xung đột với các plugin khác, dẫn đến tình trạng website hoạt động không ổn định hoặc thậm chí 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ách 2: Sửa .htaccess

# DISABLE XML RPC

<Files xmlrpc.php>

Order Deny,Allow

Deny from all

</Files>

#END

Cách 3: Trên NGINX

location = /xmlrpc.php {

deny all;

access_log off;

log_not_found off;

}

An ninh mạng là vấn đề tối quan trọng, đặc biệt khi sử dụng XML-RPC. Để bảo vệ website WordPress, người dùng nên vô hiệu hóa tính năng này khi không cần thiết và tăng cường các biện pháp bảo mật khác.

FAQ - Giải đáp thêm về XML - RPC

1. Giao thức này có phổ biến không?

XML-RPC từng là một giao thức phổ biến trong WordPress nhưng hiện nay đã giảm tầm quan trọng do sự xuất hiện của các công nghệ mới. Các vấn đề về bảo mật và hiệu suất cũng khiến nhiều người dùng tắt tính năng này.

2. Các cách để bảo mật?

Để bảo vệ website WordPress khỏi các cuộc tấn công, việc vô hiệu hóa hoặc hạn chế quyền truy cập vào file xmlrpc.php là điều cần thiết. Bạn có thể thực hiện điều này bằng cách sử dụng các plugin chuyên dụng như "Control XMLRPC publishing", "Disable XML-RPC" hoặc bằng cách chỉnh sửa file .htaccess.

3. Các plugin hỗ trợ bảo mật ?

Một số plugin hỗ trợ bảo mật như sau: 

  • Control XMLRPC publishing
  • Disable XML-RPC
  • Disable XML-RPC Pingback
  • Stop XML-RPC Attack
  • REST XML-RPC Data Checke

4. Kích hoạt XMLRPC trên WordPress

Vào Settings > Write > Bật Remote publishing with XML-RPC. Lưu lại để bắt đầu sử dụng các ứng dụng bên ngoài quản lý WordPress nhé!

terus-logo-profile
Cập nhật lúc 8 Tháng 2, 2025



Terus Technique là đội ngũ chuyên gia cung cấp thông tin về website, phần mềm và giải pháp quản lý. Mọi thông tin đều được chúng tôi cập nhật mỗi ngày nhằm cung cấp thông tin chính xác nhất.