XMLRPC là gì? Cách vô hiệu hóa XML-RPC để bảo mật WordPress

Bạn đã bao giờ nghe đến file xmlrpc.php và tự hỏi XMLRPC là gì chưa? Đây từng là một tính năng hữu ích của WordPress, nhưng giờ lại trở thành một cánh cửa tiềm ẩn cho các cuộc tấn công. Trong bài viết này, WiWeb sẽ giải thích cặn kẽ về XML-RPC và hướng dẫn bạn cách vô hiệu hóa nó để tăng cường bảo mật cho website của mình. Cùng tìm hiểu ngay nhé!

XML-RPC là gì?

Hiểu một cách đơn giản, XML-RPC là một giao thức cho phép các hệ thống, ứng dụng khác nhau có thể giao tiếp với WordPress của bạn từ xa. Nó sử dụng XML (eXtensible Markup Language) để mã hóa các lệnh và HTTP làm phương tiện truyền tải.

Cứ tưởng tượng thế này, XML-RPC giống như một người phiên dịch đặc biệt. Thay vì bạn phải đăng nhập trực tiếp vào trang quản trị WordPress để viết bài, một ứng dụng trên máy tính hoặc điện thoại có thể gửi yêu cầu (đã được dịch sang ngôn ngữ XML) đến website của bạn thông qua người phiên dịch này. Website WordPress sau khi nhận được yêu cầu sẽ thực hiện lệnh, chẳng hạn như đăng một bài viết mới.

Nhờ có giao thức này, việc quản lý nội dung WordPress trở nên linh hoạt hơn rất nhiều, đặc biệt là vào thời điểm internet còn chậm và các ứng dụng di động bắt đầu phát triển. Nó mở ra khả năng tương tác giữa WordPress và một thế giới các phần mềm bên ngoài.

XML-RPC là gì?
XML-RPC là gì?

Lịch sử và mục đích ra đời của giao thức XML-RPC

Giao thức XML-RPC không phải là phát minh của riêng WordPress. Nó ra đời từ năm 1998, trước cả khi WordPress tồn tại, với mục đích đơn giản là cho phép các chương trình máy tính khác nhau giao tiếp với nhau qua internet, bất kể chúng được viết bằng ngôn ngữ lập trình nào.

Khi WordPress ra đời, các nhà phát triển đã nhanh chóng nhận ra tiềm năng của nó. Thời đó, việc viết và chỉnh sửa bài viết trực tiếp trên trình duyệt khá bất tiện và tốc độ mạng cũng là một rào cản lớn. Mọi người thường soạn thảo nội dung trên các ứng dụng offline.

Đây chính là lúc XML-RPC tỏa sáng. Nó được tích hợp vào WordPress để giải quyết vấn đề này. Người dùng có thể sử dụng các ứng dụng trên máy tính (như Windows Live Writer) để viết bài, sau đó chỉ cần một cú nhấp chuột là bài viết sẽ được đăng lên website WordPress của họ. Ngoài ra, nó cũng là nền tảng cho các tính năng như pingbacktrackback, giúp các blog tự động thông báo cho nhau khi có liên kết. Mục đích ban đầu của nó thực sự rất hữu ích và mang tính cách mạng.

Lịch sử và mục đích ra đời của giao thức XML-RPC
Lịch sử và mục đích ra đời của giao thức XML-RPC

Vai trò của file xmlrpc.php trong WordPress

Nếu XML-RPC là giao thức (bộ quy tắc giao tiếp), thì file xmlrpc.php chính là cánh cổng, là điểm tiếp nhận các yêu cầu giao tiếp đó trên website WordPress của bạn. File này nằm ngay trong thư mục gốc của WordPress.

Mỗi khi một ứng dụng bên ngoài muốn thực hiện một hành động trên website của bạn (như đăng bài, xóa bình luận, tải lên hình ảnh), nó sẽ gửi một yêu cầu HTTP đến địa chỉ yourdomain.com/xmlrpc.php.

File xmlrpc.php sẽ tiếp nhận yêu cầu này, giải mã nó, xác thực thông tin đăng nhập (nếu có) và sau đó thực thi lệnh tương ứng. Nó đóng vai trò trung tâm cho mọi hoạt động từ xa thông qua giao thức XML-RPC. Trước đây, ứng dụng di động chính thức của WordPress cũng phụ thuộc rất nhiều vào file này để hoạt động. Vì vậy, có thể nói rằng, xmlrpc.php là gì? Nó chính là hiện thân vật lý của giao thức XML-RPC trên trang web của bạn.

Vai trò của file xmlrpc.php trong WordPress
Vai trò của file xmlrpc.php trong WordPress

Tại sao XML-RPC lại là một lỗ hổng bảo mật tiềm ẩn?

Dù từng rất hữu ích, XML-RPC ngày nay lại bị xem là một điểm yếu bảo mật nghiêm trọng. Có hai loại tấn công chính mà hacker thường khai thác qua lỗ hổng xml-rpc.

Tấn công dò mật khẩu

Thông thường, khi bạn đăng nhập sai nhiều lần, các plugin bảo mật sẽ khóa IP của bạn. Tuy nhiên, hacker có thể lợi dụng một hàm trong XML-RPC có tên là system.multicall. Hàm này cho phép chúng gửi hàng trăm, thậm chí hàng nghìn cặp tên đăng nhập và mật khẩu chỉ trong một yêu cầu HTTP duy nhất. Điều này giúp chúng dễ dàng vượt qua các cơ chế bảo vệ thông thường, thực hiện một cuộc xml-rpc attack để dò ra mật khẩu của bạn mà không bị phát hiện.

Tấn công DDoS

Hacker có thể lợi dụng tính năng pingback của XML-RPC. Chúng sẽ ra lệnh cho hàng ngàn website WordPress khác nhau cùng lúc gửi yêu cầu pingback đến một website mục tiêu. Việc phải xử lý đồng loạt một lượng lớn yêu cầu như vậy sẽ khiến máy chủ của website mục tiêu bị quá tải, dẫn đến sập web.

Chính vì những rủi ro này, việc tắt xmlrpc wordpress gần như là một yêu cầu bắt buộc để bảo vệ website trong thời điểm hiện tại.

Tại sao XML-RPC lại là một lỗ hổng bảo mật tiềm ẩn?
Tại sao XML-RPC lại là một lỗ hổng bảo mật tiềm ẩn?

Cách kiểm tra website có đang kích hoạt XML-RPC không

Làm sao để biết website của bạn có đang mở cánh cổng này cho hacker hay không? Cách kiểm tra cực kỳ đơn giản, bạn không cần phải là chuyên gia kỹ thuật đâu.

Bạn có thể sử dụng một công cụ kiểm tra trực tuyến. Một công cụ phổ biến và miễn phí là XML-RPC Validator.

  1. Truy cập vào trang web của công cụ (bạn có thể tìm kiếm trên Google với từ khóa XML-RPC Validator Tool).
  2. Nhập địa chỉ website của bạn vào ô kiểm tra. Lưu ý, hãy nhập đầy đủ cả đường dẫn tới file, ví dụ: https://wiweb.vn/xmlrpc.php.
  3. Nhấn nút Check.

Nếu kết quả trả về một thông báo thành công, ví dụ như Congratulations! Your site passed the first and most important test... thì có nghĩa là XML-RPC đang được kích hoạt. Ngược lại, nếu bạn nhận được một thông báo lỗi, điều đó có nghĩa là nó đã được vô hiệu hóa. Quá dễ phải không nào?

Cách kiểm tra website có đang kích hoạt XML-RPC không
Cách kiểm tra website có đang kích hoạt XML-RPC không

Hướng dẫn 3 cách vô hiệu hóa XML-RPC trên WordPress

Khi đã xác định XML-RPC đang hoạt động, bạn nên vô hiệu hóa nó ngay. Dưới đây là 3 cách phổ biến từ dễ đến khó để disable xmlrpc. WiWeb khuyên bạn nên sao lưu website trước khi thực hiện nhé!

Cách 1: Sử dụng Plugin (Dễ nhất)

Đây là phương pháp dành cho tất cả mọi người. Bạn chỉ cần vào trang quản trị WordPress, tìm và cài đặt plugin có tên là Disable XML-RPC. Sau khi kích hoạt, plugin sẽ tự động làm mọi việc. Không cần cấu hình gì thêm!

Cách 2: Chỉnh sửa file .htaccess (Mức độ trung bình)

Nếu bạn không muốn cài thêm plugin, bạn có thể thêm một đoạn mã vào file .htaccess trong thư mục gốc của website.

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Đoạn mã này sẽ chặn mọi truy cập từ bên ngoài vào file xmlrpc.php.

Cách 3: Thêm code vào file functions.php (Dành cho người có kinh nghiệm)

Một cách khác là bạn có thể thêm dòng mã sau vào cuối file functions.php của theme bạn đang sử dụng.

add_filter('xmlrpc_enabled', '__return_false');

Cách này sẽ báo cho WordPress rằng tính năng XML-RPC đã bị tắt. Dù chọn cách nào, hãy nhớ kiểm tra lại bằng công cụ ở phần trên để đảm bảo bạn đã thành công nhé. Bạn nghĩ cách nào là phù hợp nhất với mình?

Hướng dẫn 3 cách vô hiệu hóa XML-RPC trên WordPress
Hướng dẫn 3 cách vô hiệu hóa XML-RPC trên WordPress

Khi nào bạn nên giữ lại XML-RPC?

Mặc dù việc vô hiệu hóa XML-RPC được khuyến khích mạnh mẽ, vẫn có một vài trường hợp bạn cần cân nhắc giữ lại nó.

Trường hợp phổ biến nhất là khi bạn đang sử dụng plugin Jetpack. Một số tính năng cũ của Jetpack, đặc biệt là các tính năng liên quan đến quản lý từ xa qua tài khoản WordPress.com, vẫn còn phụ thuộc vào XML-RPC để hoạt động. Tuy nhiên, các phiên bản mới của Jetpack đã dần chuyển sang sử dụng REST API, nên sự phụ thuộc này đang giảm đi.

Một trường hợp khác là nếu bạn đang sử dụng các ứng dụng hoặc dịch vụ bên thứ ba cũ để tự động hóa việc đăng bài, ví dụ như một số applet của IFTTT (If This Then That) hoặc các phần mềm client blogging đã lỗi thời.

Lời khuyên của WiWeb là: hãy kiểm tra lại các plugin và dịch vụ bạn đang kết nối với website. Nếu không có gì thực sự cần đến XML-RPC, hãy tắt nó đi. An toàn là trên hết. Trong hơn 95% các website hiện đại, việc vô hiệu hóa XML-RPC hoàn toàn không gây ra bất kỳ ảnh hưởng tiêu cực nào.

Khi nào bạn nên giữ lại XML-RPC?
Khi nào bạn nên giữ lại XML-RPC?

So sánh sự khác biệt giữa XML-RPC và REST API

Nhiều người thắc mắc, nếu tắt XML-RPC thì làm sao các ứng dụng có thể giao tiếp với WordPress? Câu trả lời chính là REST API. Đây là công nghệ kế nhiệm, hiện đại và an toàn hơn rất nhiều. Vậy REST API là gì và nó khác gì XML-RPC?

  • Định dạng dữ liệu: XML-RPC sử dụng định dạng XML khá cồng kềnh. Trong khi đó, REST API chủ yếu sử dụng JSON, một định dạng nhẹ, linh hoạt và dễ đọc hơn cho cả người và máy.
  • Tính linh hoạt: XML-RPC có một bộ hàm chức năng cố định. Bạn chỉ có thể gọi các hàm đã được định nghĩa sẵn. REST API thì linh hoạt hơn rất nhiều, nó hoạt động dựa trên các phương thức HTTP chuẩn (GET, POST, PUT, DELETE), cho phép các nhà phát triển thực hiện nhiều thao tác đa dạng hơn.
  • Bảo mật: Đây là điểm khác biệt lớn nhất. REST API được tích hợp sâu vào hệ thống của WordPress với các cơ chế xác thực hiện đại và an toàn hơn, chẳng hạn như OAuth. Nó cung cấp khả năng kiểm soát quyền truy cập chi tiết hơn, giảm thiểu rủi ro bị lạm dụng so với XML-RPC.

Có thể nói, REST API chính là tương lai của việc giao tiếp với WordPress, và nó là lý do chính khiến XML-RPC trở nên lỗi thời.

Các câu hỏi thường gặp về XML-RPC (FAQ)

Thông thường là không. Hầu hết các website WordPress hiện đại không còn phụ thuộc vào XML-RPC nữa. Trừ khi bạn đang dùng một plugin hoặc dịch vụ rất cũ có yêu cầu tính năng này, việc tắt nó đi là hoàn toàn an toàn và được khuyến nghị.

Có, bạn vẫn nên tắt. Mặc dù các plugin bảo mật rất tốt, cuộc tấn công brute force qua system.multicall có thể vượt qua một số cơ chế bảo vệ của chúng. Tắt tận gốc nguồn cơn của vấn đề luôn là giải pháp an toàn nhất.

WordPress luôn ưu tiên tính tương thích ngược. Vẫn còn một số lượng nhỏ các trang web và ứng dụng cũ phụ thuộc vào XML-RPC. Vì vậy, họ giữ nó ở trạng thái kích hoạt theo mặc định để không phá vỡ hoạt động của các trang web đó. Tuy nhiên, cộng đồng đang ngày càng khuyến khích người dùng tự tay vô hiệu hóa nó.

Bất kỳ công nghệ nào cũng có thể có lỗ hổng. Tuy nhiên, REST API được thiết kế với các tiêu chuẩn bảo mật hiện đại hơn, có hệ thống xác thực và phân quyền tốt hơn, khiến việc khai thác nó trở nên khó khăn hơn nhiều so với XML-RPC.

Qua bài viết này, hy vọng bạn đã hiểu rõ XMLRPC là gì và tại sao nó lại là một rủi ro bảo mật cho website WordPress. XML-RPC từng là một công nghệ tiên phong, nhưng giờ đây nó đã trở nên lỗi thời và được thay thế bằng REST API mạnh mẽ, an toàn hơn.

Việc chủ động kiểm tra và tắt xmlrpc wordpress là một bước đi nhỏ nhưng vô cùng quan trọng để xây dựng một hàng rào bảo vệ vững chắc cho ngôi nhà số của bạn. Đừng để một cánh cửa cũ kỹ không dùng đến trở thành điểm yếu cho kẻ xấu lợi dụng.

Bạn đã kiểm tra website của mình chưa? Bạn còn câu hỏi nào về XML-RPC hay các vấn đề bảo mật khác không? Hãy để lại bình luận bên dưới, WiWeb rất sẵn lòng trao đổi cùng bạn!

Nếu bạn đang tìm kiếm một đơn vị thiết kế website chuyên nghiệp, chú trọng đến yếu tố bảo mật ngay từ những bước đầu tiên, hãy liên hệ ngay với WiWeb. Chúng tôi luôn sẵn sàng tư vấn và mang đến cho bạn một giải pháp website toàn diện và an toàn.

5/5 - (206 Đánh giá)
Bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *