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

XML-RPC là gì?

XML-RPC là sử dụng giao thức WebService (soap) dùng XML để mã hóa và trao đổi dữ liệu (Remote Procedure Call XML) và có thể hỗ trợ các API của các CMS như WordPress APIBlogger APIMovable APIPingback API, MetaWeblog API,… Vậy ứng dụng của XMLRPC là gì?

XMLRPC là gì? 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

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

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ụ, khi người dùng muốn chỉnh sửa hoặc đăng tải một bài viết lên WordPress không bằng máy tính mà thông qua điện thoại. Khi đó, XMLRPC.PHP sẽ kích hoạt trạng thái liên kết giữa máy tính và điện thoại, cho phép người dùng thực hiện các chỉnh sửa.

Trong trường hợp bạn chưa hiểu rõ về WordPress, Mắt Bão mời bạn tham khảo bài viết: “WordPress là gì?“.

Lý do XMLRPC từng thông dụng là gì?

XMLRPC là gì? XMLRPC.PHP trước đây được sử dụng tương đối phổ biến trong việc truy cập và chỉnh sửa nội dung trang web

XMLRPC.PHP trước đây được sử dụng tương đối phổ biến trong việc truy cập và chỉnh sửa nội dung trang web

Trong những năm về trước, 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.

Theo đó, 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.

Tuy nhiên, trong tình hình 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 nữa.

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

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

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

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

  • XMLRPC server là một web server, có chức năng nhận thông tin đã được mã hoá từ XMLRPC client.
  • XMLRPC 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 XMLRPC server.

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

XMLRPC là gì? Quá trình kích hoạt XMLRPC tương đối đơn giản

Quá trình kích hoạt XMLRPC tương đối đơn giản

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

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

WordPress XMLRPC Server

XMLRPC server là một web server, có chức năng nhận thông tin đã được mã hoá

XMLRPC server là một web server, có chức năng nhận thông tin đã được mã hoá

  • Đăng ký hàm XMLRPC mới: Để tạo một hàm  XMLRPC mới, cần thực hiện các bước như sau:
Ở 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:

*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

 

XMLRPC Client

Chức năng của XMLRPC Client là truyền thông tin đã được mã hoá đến XMLRPC Server

Chức năng của XMLRPC Client là truyền thông tin đã được mã hoá đến XMLRPC Server

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

  • Bước 1: Kết nối với XMLRPC Server
  • Bước 2: Tạo lớp XMLRPC_Client với nội dung có sẵn

Gọi hàm RPC

  • Bước 1: Kết nối tới XMLRPC Server
  • Bước 2: Truy cập XMLRPC_Client
  • Bước 3: Tạo instance trên XMLRPC_Client
  • Bước 4: Dùng hàm “ //call method ” để tiến hành gọi hàm
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.sayHello .

Tại sao không nên sử dụng XMLRPC?

Bởi xuất hiện nhiều hạn chế mà ngày nay XMLRPC không được khuyến khích sử dụng trên WordPress

Bởi xuất hiện nhiều hạn chế mà ngày nay XMLRPC không được khuyến khích sử dụng trên WordPress

Trước đây, XMLRPC đượ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à XMLRPC không còn được khuyến khích sử dụng. Trong đó, có 2 nguyên nhân chính mà chúng ta không nên sử dụng XMLRPC:

Khả năng bảo mật kém

Việc kích hoạt XMLRPC sẽ khiến trang web dễ dàng bị hacker xâm nhập

Việc kích hoạt XMLRPC sẽ khiến trang web dễ dàng bị hacker xâm nhập

Khuyết điểm lớn nhất của XMLRPC 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 XMLRPC.

Phần mềm khắc phục nhược điểm của XMLRPC là gì?

XMLRPC là gì? Sự ra đời của WordPress API đã khắc phục được những hạn chế của XMLRPC

Sự ra đời của WordPress API đã khắc phục được những hạn chế của XMLRPC

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ư XMLRPC, đượ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 XMLRPC 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à XMLRPC đang mắc phải.

Cách biết XMLRPC.PHP đang bị tấn công là gì?

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

Việc kích hoạt XMLRPC 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 XMLRPC.

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.

Cách vô hiệu XMLRPC

Có nhiều phương pháp khác nhau để vô hiệu hoá XMLRPC 

Có nhiều phương pháp khác nhau để vô hiệu hoá XMLRPC

Cách 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 XMLRPC -› plugin Disable XMLRPC
  • Bước 3: Kích hoạt plugin Disable XMLRPC để vô hiệu hoá XMLRPC
XMLRPC là gì? Tìm plugin Disable XML-RPC và cài đặt plugin như hình.

Tìm plugin Disable XML-RPC và cài đặt plugin như hình.

Tuy nhiên, một vấn đề có thể xảy ra khi tiến hành vô hiệu hoá XMLRPC 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 XMLRPC. 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ách 2: Sửa .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:

Cách 3: Trên NGINX

Trường hợp chưa biết về NGINX, bạn có thể tham khảo thêm bài viết: “NGINX là gì?

NGINX là một phần mềm web server mã nguồn mở, sử dụng kiến trúc hướng sự kiện (event-driven) không đồng bộ (asynchronous). Mục tiêu ban đầu để phục vụ HTTP cache nhưng sau được áp dụng vào reverse proxyHTTP load balancer và các giao thức truyền mail như IMAP4, POP3, và SMTP.

  • 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:
  • Bước 3: Chọn service nginx restart  để khởi động lại NGINX

Khi thực hiện các dịch vụ thông qua kết nối internet, bảo mật chính là vấn đề quan trọng nhất. Vì vậy, sự bảo mật kém chính là hạn chế lớn nhất của XMLRPC. Người dùng WordPress cần lưu ý nên cài chế độ bảo mật tuyệt đối cũng như vô hiệu hóa XMLRPC khi không cần thiết để tránh tình trạng bị đánh cắp thông tin dữ liệu trên trang web.