Ngày nay, có rất nhiều cách để các ứng dụng “trò chuyện” và trao đổi dữ liệu với nhau. Một trong những giao thức từng được sử dụng rộng rãi là XML-RPC – cái tên quen thuộc với giới lập trình web và hệ thống phân tán. Nhưng công nghệ này liệu còn phù hợp ở hiện tại? Hãy cùng Xanh Cloud khám phá XML-RPC là gì và vì sao nên hạn chế sử dụng và đâu là những lựa chọn thay thế tối ưu hơn.
Khái niệm XML-RPC là gì?
XML-RPC (XML – Remote Procedure Call) là một giao thức giao tiếp giữa hai hệ thống máy tính thông qua mạng Internet cho phép một chương trình có thể gọi hàm và nhận dữ liệu từ một chương trình khác chạy trên máy chủ ở xa. Có thể hình dung XML-RPC giống như một ngôn ngữ chung giúp các máy tính “nói chuyện” với nhau từ xa mà không cần phải trực tiếp đăng nhập vào hệ thống.
Ví dụ: Một ứng dụng di động có thể đăng bài viết lên website WordPress chỉ bằng cách gửi yêu cầu XML-RPC mà không cần mở trình duyệt để vào trang quản trị.

Cấu trúc hoạt động
XML-RPC được thiết kế khá đơn giản, dựa trên hai thành phần chính:
- HTTP: Được sử dụng làm phương tiện truyền tải dữ liệu.
- XML: Dùng để đóng gói nội dung của request (yêu cầu) và response (phản hồi).
Quy trình cơ bản:
- Ứng dụng client gửi một yêu cầu (request) dưới dạng XML thông qua HTTP.
- Máy chủ nhận yêu cầu, xử lý và trả về phản hồi (response) cũng ở dạng XML.
- Ứng dụng client giải mã XML để lấy dữ liệu cần thiết.
Ứng dụng thực tế trong quá khứ
XML-RPC từng rất phổ biến trong những năm 2000 trước khi RESTful API hay gRPC trở nên thịnh hành. Một số ví dụ điển hình:
- WordPress: XML-RPC cho phép người dùng đăng bài viết, chỉnh sửa nội dung, quản lý bình luận từ xa thông qua ứng dụng di động hoặc phần mềm của bên thứ ba mà không cần đăng nhập trực tiếp vào dashboard của WordPress.
- Các hệ thống CMS và blog đời cũ: Một số nền tảng quản trị nội dung và dịch vụ blog ban đầu cũng sử dụng XML-RPC để cung cấp tính năng quản lý nội dung từ xa.
So sánh nhanh
Tiêu chí | XML-RPC | Đăng nhập trực tiếp |
Cách thức sử dụng | Gửi yêu cầu qua HTTP bằng XML | Truy cập trang quản trị bằng username & password |
Tiện lợi | Cho phép thao tác từ xa qua ứng dụng hoặc dịch vụ bên ngoài | Chỉ có thể thực hiện trực tiếp trên website |
Bảo mật | Dễ bị khai thác (ví dụ brute-force, DDoS thông qua API) | An toàn hơn do xác thực trực tiếp trong hệ thống |
Ứng dụng | Tự động hóa, đăng bài qua mobile app, quản lý từ xa | Quản trị toàn diện, ít rủi ro hơn |
Nhờ đặc điểm đơn giản và dễ triển khai, XML-RPC từng là giải pháp phổ biến. Tuy do giới hạn về bảo mật và hiệu năng, giao thức này ngày nay đã dần bị thay thế bởi các công nghệ hiện đại hơn như REST API và gRPC.
Vì sao nên hạn chế sử dụng XML-RPC? Các điểm yếu chết người
Mặc dù từng là một giải pháp hữu ích trong giai đoạn Internet chưa phát triển mạnh, XML-RPC ngày nay bị xem là lỗi thời và tiềm ẩn nhiều rủi ro. Dưới đây là những nguyên nhân chính khiến các chuyên gia khuyến nghị nên vô hiệu hóa hoặc tránh sử dụng giao thức này.
1. Vấn đề bảo mật (Security)
Tấn công Brute Force
Một trong những lỗ hổng nguy hiểm nhất của XML-RPC là cho phép kẻ tấn công thực hiện hàng ngàn yêu cầu đăng nhập chỉ bằng một lệnh duy nhất thông qua hàm system.multicall.
- Thay vì phải gửi từng request riêng lẻ, hacker có thể gộp hàng nghìn lần thử mật khẩu trong một request duy nhất đến file xmlrpc.php.
- Kết quả: Máy chủ bị quá tải và tỷ lệ thành công trong việc đoán mật khẩu cao hơn nhiều.
- Ví dụ thực tế: Rất nhiều website WordPress bị brute force tấn công qua XML-RPC, trong log file access_log thường xuất hiện liên tục các dòng request đến /xmlrpc.php

Tấn công DDoS
XML-RPC hỗ trợ tính năng “pingback” cho phép một site thông báo đến site khác khi có liên kết. Tuy hacker có thể lợi dụng để biến website thành “máy phát tán DDoS”:
- Chúng gửi hàng loạt pingback request qua XML-RPC để nhắm đến website mục tiêu.
- Điều này biến chính server của bạn thành công cụ tấn công DDoS, khiến website khác bị sập và bản thân website của bạn cũng quá tải, dễ bị đưa vào blacklist.
So với các chuẩn bảo mật hiện đại như OAuth hoặc token-based authentication, XML-RPC không có lớp xác thực đủ mạnh. Việc chỉ dựa vào username và password khiến hệ thống dễ bị khai thác.
2. Hiệu suất kém (Performance)
XML có cấu trúc phức tạp với nhiều thẻ mở/đóng. Khi truyền tải dữ liệu, đặc biệt là dữ liệu lớn, dung lượng gói tin XML phình to, gây tiêu tốn băng thông và làm giảm tốc độ phản hồi.
Máy chủ phải parse (phân tích cú pháp) XML vốn nặng nề hơn nhiều so với JSON. Điều này làm tăng mức tiêu thụ CPU và RAM, đặc biệt khi website có lưu lượng truy cập cao.
Ví dụ: Một request RPC đơn giản bằng JSON có thể chỉ vài trăm byte, trong khi với XML, cùng dữ liệu đó có thể lên đến vài kilobyte.

3. Hạn chế về tính năng và cấu trúc
XML-RPC chỉ hỗ trợ các kiểu dữ liệu cơ bản như số nguyên, chuỗi, mảng đơn giản. Điều này gây khó khăn khi truyền tải hoặc xử lý các cấu trúc dữ liệu phức tạp (ví dụ: đối tượng lồng nhau, dữ liệu JSON động).
XML-RPC không có sự thống nhất tuyệt đối giữa các nền tảng. Tùy vào cách triển khai mà dữ liệu có thể bị xử lý khác nhau, gây lỗi tương thích khi tích hợp nhiều hệ thống.

XML-RPC không chỉ thiếu bảo mật, mà còn kém hiệu suất và hạn chế về mặt kỹ thuật, đặc biệt trong bối cảnh hiện nay khi REST API và GraphQL đã trở thành tiêu chuẩn cho các ứng dụng web và di động.
Như vậy, những hạn chế về bảo mật và hiệu suất đã khiến XML-RPC trở thành một “di sản” cần được loại bỏ. Ngày nay, REST API đã trở thành tiêu chuẩn mới, mang lại sự an toàn và hiệu quả cao hơn. Bạn đã kiểm tra và tắt XML-RPC trên website của mình chưa? Hãy chia sẻ kinh nghiệm của bạn ở phần bình luận nhé.