5/5 - (1 bình chọn)

I. XML-RPC là gì? Vì sao lại cần chặn

XML-RPC là gì?

XML-RPC là một cơ chế cho phép giao tiếp giữa WordPress và các hệ thống khác. Điều này đạt được bằng cách chuẩn hóa giao tiếp, sử dụng HTTP làm cơ chế truyền tải và XML làm cơ chế mã hóa.

Bản thân XML-RPC có lịch sử lâu đời hơn WordPress. Điều này tồn tại trong phần mềm blog b2, nền tảng cho WordPress vào năm 2003. Mã đằng sau hệ thống này được lưu trữ trong một tệp có tên xmlrpc.php trong thư mục gốc của trang web. XML-RPC đã lỗi thời, nhưng vẫn còn đó.

Trong các phiên bản trước của WordPress, XML-RPC bị tắt theo mặc định. Tuy nhiên, kể từ phiên bản 3.5, nó được bật theo mặc định. Lý do chính cho điều này là cho phép ứng dụng di động WordPress giao tiếp với trang web WordPress của bạn.

Với các ứng dụng di động WordPress trước phiên bản 3.5, bạn phải bật XML-RPC trên trang web của mình để đăng nội dung từ ứng dụng … (Bạn có nhớ không?) Điều này là do ứng dụng không chạy WordPress. Thay vào đó, nó sử dụng xmlrpc.php để giao tiếp với trang WordPress.

Nhưng XML-RPC không phải là ứng dụng di động duy nhất được sử dụng. Nó cũng được sử dụng để kích hoạt giao tiếp giữa WordPress và các nền tảng blog khác, kích hoạt trackback và pinbacks và củng cố khả năng của plugin Jetpack để liên kết WordPress tự lưu trữ với WordPress.com.

Sau đó, REST API đã được tích hợp vào lõi WordPress và tệp xmlrpc.php không còn được sử dụng cho giao tiếp này nữa. Chúng tôi sử dụng API REST để giao tiếp với các ứng dụng dành cho thiết bị di động WordPress, ứng dụng khách trên máy tính để bàn, nền tảng blog bên ngoài, WordPress.com (dành cho plugin Jetpack), cũng như các hệ thống và dịch vụ khác. Sự lựa chọn hệ thống mà REST API có thể kết nối phong phú hơn nhiều so với xmlrpc.php. Nó cũng có tính linh hoạt áp đảo.

Do đó, hiện tại REST API đã thay thế XML-RPC, bạn nên tắt xmlrpc.php trên trang web của mình. Lý do chi tiết cho việc vô hiệu hóa như sau.

Vì sao lại chặn XML-RPC

Lý do chính khiến bạn cần phải vô hiệu hóa xmlrpc.php trên trang web WordPress của mình là nó có thể khiến bạn tiếp xúc với các lỗ hổng bảo mật và có thể trở thành mục tiêu tấn công.

Không có lý do gì để giữ cho XML-RPC được bật vì nó không cần giao tiếp bên ngoài WordPress nữa. Bạn nên tắt tính năng này để tăng tính bảo mật cho trang web của mình.

Nhưng nếu xmlrpc.php là một vấn đề bảo mật và thậm chí không hoạt động, tại sao nó không bị xóa hoàn toàn khỏi WordPress?

Điều này là do một trong những tính năng chính của WordPress luôn là khả năng tương thích ngược. Tất cả chúng ta đều biết rằng việc cập nhật WordPress, plugin và theme của bạn là điều quan trọng đối với bất kỳ ai biết cách quản lý trang web.

Tuy nhiên, một số chủ sở hữu trang web không muốn hoặc không thể cập nhật phiên bản WordPress của họ. Nếu người đó đang sử dụng phiên bản trước khi API REST được giới thiệu, anh ta sẽ cần quyền truy cập vào xmlrpc.php.

II. Hướng dẫn chặn XML-RPC

1. Chặn XML-RPC bằng .htaccess

Cách này chỉ áp dụng với máy chủ web hỗ trợ tập tin .htaccess như: Apache, OpenLiteSpeed (OLS), LiteSpeed Webserver.

Ở đây mình sử dụng cPanel. Với các panel khác thì bạn cũng làm tương tự là tìm tập tin .htaccess mở nó lên vào thêm vào đoạn mã sau.

Nếu tập tin .htaccess không có sẵn thì bạn hãy tạo mới nó nhé.

chan xml rpc 2

 

Sau đó thêm đoạn mã vào như ảnh minh hoạ sau.

RewriteRule xmlrpc - [F,L]

Hoặc bạn có thể sử dụng đoạn mã này cũng được.

<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>

chan xml rpc 3

2. Chặn XML-RPC trên NGINX

Với máy chủ NGINX thì bạn không sử dụng tập tin .htaccess được mà bạn hãy vào thẳng file cấu hình vhost và thêm ở đó.

Và bên dưới là đoạn mã để các bạn thêm vào.

location = /xmlrpc.php {
          deny all;
          access_log off;
          log_not_found off;
}

3. Chặn XML-RPC bằng functions trong theme

Các bạn có thể chặn xml-rpc bằng cách thêm đoạn code sau vào functions.php của theme đang dùng

//Disable XML-RPC
add_filter('xmlrpc_enabled', '__return_false');

Chúc các bạn thực hiện thành công.

Trả lời

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 *