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à 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.
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.
Trong WordPress, XMLRPC gồm có 2 phần chính: XMLRPC server và XMLRPC client:
Hướng dẫn cách cài XMLRPC
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 phải được thiết kế để mang lại một kết quả nhất định. Để truyền giá trị ra ngoài, hãy sử dụng câu lệnh return thay vì in nó trực tiếp trên màn hình. Việc xóa hàm RPC sử dụng hàm xmlrpc_methods là giống như việc tạo hàm.function mynamespace_remove_xmlrpc_methods( $methods ) {unset( $methods['demo.addTwoNumbers'] );unset( $methods['frs.helloTerus'] );return $methods;}add_filter( 'xmlrpc_methods', 'mynamespace_remove_xmlrpc_methods');
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 ); }}
$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);
Sự tiến bộ công nghệ không ngừng đã khiến XMLRPC trở nên lỗi thời và gây nguy hiểm bảo mật. Do đó, để đảm bảo sự hiệu quả và an toàn của hệ thống, cần phải chuyển sang các giải pháp hiện đại hơn.XML-RPC có nhiều vấn đề bảo mật khiến hacker có thể hack website. Các cuộc tấn công như brute-force vào mật khẩu hoặc DDoS thường xảy ra, có thể ảnh hưởng đến hoạt động của website.Người dùng WordPress thường vô hiệu hóa tính năng này để ngăn chặn các cuộc tấn công bảo mật thông qua lỗ hổng XML-RPC.
Hiện tại, API của WordPress đang được thử nghiệm và phát triển. API này được cho là sẽ cung cấp nhiều khả năng mới cho việc tùy chỉnh và mở rộng WordPress vì nó có chức năng giống như XML-RPC.Với những cải tiến và xuất hiện của API, tôi tin rằng nó sẽ là một sự thay thế tuyệt vời cho XMLRPC, giải quyết tất cả những nhược điểm của XMLRPC.
Như tôi đã đề cập cho bạn, XMPRPC rất dễ bị tấn công. Cách dễ nhất để xác định nó là 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 của một cuộc tấn công XML-RPC xảy ra trên trang web.Ví dụ như:
Để giải quyết tình trạng này, việc vô hiệu hóa XMLRPC là cách tốt nhất. Người dùng phải thực hiện một số bước để tắt XMLRPC sau khi cài đặt WordPress. Có rất nhiều cách khác nhau để vô hiệu hóa giao thức này.
Việc vô hiệu hóa XML-RPC thông qua một plugin có thể dẫn đến xung đột với các plugin khác và dẫn đến tình trạng website 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:
# DISABLE XML RPC<Files xmlrpc.php>Order Deny,AllowDeny from all</Files>#END
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.
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.
Để 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.
Một số plugin hỗ trợ bảo mật như sau:
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é!