NỘI DUNG
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
Nếu bạn chưa chặn tập tin này thì khi truy cập vào https://domain/xmlrpc.php
sẽ hiển thị thông báo như sau.
Và bây giờ hãy cùng mình chặn nó với những cách sau nhé.
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é.
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>
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 Plugin
Một cách khác đơn giản hơn là sử dụng Plugin để tự động làm việc này. Bạn hãy đăng nhập vào WordPress và tìm Plugin có tên Disable XML RPC-API để cài đặt.
Với các cách chặn trên thì bạn truy cập vào sẽ nhận được thông báo 403 Forbidden như ảnh là đã thành công.
4. Kích hoạt lại XML-RPC để sử dụng App WordPress
Trường hợp bạn muốn sử dụng tập tin này cho việc đăng nhập app WordPress hoặc một lý do nào đó. Bạn hãy làm ngược lại với các thao tác đã làm nhé.
Hoặc thêm đoạn mã sau vào file .htaccess nếu như tập tin này mặc định đã chặn ở webserver của nhà cung cấp.
<Files "xmlrpc.php"> Order Allow,Deny allow from all </Files>
Chúc các bạn thực hiện thành công.