File xmlrpc là gì?
File xmlrpc.php
trong WordPress, bao gồm cả theme Flatsome, được sử dụng để hỗ trợ giao tiếp từ xa giữa WordPress và các ứng dụng bên ngoài. Nó cung cấp API XML-RPC cho phép các tính năng như:
- Quản lý từ xa: Bạn có thể quản lý website WordPress của mình thông qua ứng dụng di động hoặc phần mềm như Windows Live Writer.
- Pingbacks/Trackbacks: XML-RPC cho phép WordPress nhận các thông báo tự động khi một trang khác liên kết đến nội dung của bạn.
Về vấn đề bảo mật
File xmlrpc.php
từng là mục tiêu của nhiều cuộc tấn công, chủ yếu là do:
- Tấn công DDoS: Tin tặc có thể lợi dụng file này để gửi hàng loạt yêu cầu để làm quá tải máy chủ.
- Brute Force Attacks: Bằng cách gửi hàng loạt yêu cầu đăng nhập từ xa, tin tặc có thể cố gắng bẻ khóa mật khẩu.
Có nên xóa xmlrpc.php
để bảo mật không?
- Nếu bạn không sử dụng các tính năng như quản lý từ xa hay pingbacks/trackbacks, thì nên vô hiệu hóa hoặc xóa file này để tăng cường bảo mật.
- Thay vì xóa, bạn cũng có thể tắt hoặc chặn truy cập vào file này bằng cách chỉnh sửa file
.htaccess
:
1 2 3 4 |
<Files xmlrpc.php> order deny,allow deny from all </Files> |
Chèn nó vào vị trí nào trong file .htaccess?
Để chặn truy cập vào file xmlrpc.php
, bạn cần chèn đoạn mã vào bất kỳ vị trí nào trong file .htaccess
, miễn là nó nằm trước bất kỳ quy tắc nào có thể ghi đè lên. Tuy nhiên, để đảm bảo hoạt động đúng, tốt nhất bạn nên chèn ngay sau dòng # END WordPress
nếu có, hoặc chèn ở đầu file nếu không có các quy tắc khác.
Dưới đây là cách chèn đoạn mã vào file .htaccess
:
- Mở file
.htaccess
từ thư mục gốc của WordPress. - Thêm đoạn mã sau ngay sau dòng
# END WordPress
hoặc ở đầu file nếu không có
Ví dụ nếu có dòng # END WordPress
, file sẽ trông như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress <Files xmlrpc.php> order deny,allow deny from all </Files> |
# END WordPress
, bạn có thể chèn đoạn mã này vào đầu file.
Giả sử xóa file xmlrpc.php mà vẫn chèn đoạn code trên vào .htaccess vẫn không sao chứ?
Đúng vậy! Nếu bạn đã xóa file xmlrpc.php
và vẫn chèn đoạn mã vào .htaccess
, thì cũng không gây ra vấn đề gì.
Khi không còn file xmlrpc.php
, quy tắc trong .htaccess
đơn giản là sẽ không có tác dụng, vì không có file nào để xử lý. Do đó, việc chèn đoạn mã vào file .htaccess
chỉ là một biện pháp bảo vệ bổ sung, và nó không gây ảnh hưởng nếu file xmlrpc.php
đã bị xóa.
Tại sao phải chèn sau # END WordPress, # END WordPress có phải là ghi chú không?
Đúng vậy, dòng # END WordPress
là một ghi chú (comment) trong file .htaccess
, không phải là một lệnh. Nó được WordPress tự động tạo ra khi bạn cài đặt hoặc cập nhật, để đánh dấu sự kết thúc của các quy tắc mà WordPress cần cho việc vận hành trang web.
Lý do nên chèn đoạn mã sau dòng # END WordPress
là vì:
- Phần giữa
# BEGIN WordPress
và# END WordPress
được WordPress tự động quản lý: Khi WordPress cập nhật hoặc thay đổi các thiết lập permalink, nó có thể ghi đè lên phần này. Nếu bạn chèn các quy tắc thủ công vào giữa hai dòng đó, chúng có thể bị mất khi WordPress thực hiện thay đổi. - Chèn sau
# END WordPress
đảm bảo các quy tắc thủ công không bị ảnh hưởng: Phần sau dòng# END WordPress
thường được dành cho các tùy chỉnh hoặc quy tắc do người dùng tạo ra. Các quy tắc này sẽ không bị WordPress ghi đè khi có sự thay đổi cấu hình hoặc cập nhật.
Như vậy, đoạn mã tùy chỉnh của bạn (ví dụ để chặn xmlrpc.php
) sẽ được giữ nguyên ngay cả khi WordPress tự động cập nhật phần của nó trong file .htaccess
.
Nếu chèn phần đầu thì cũng phải chèn trên # BEGIN WordPress chứ?
Đúng vậy! Nếu bạn muốn chèn đoạn mã vào phần đầu của file .htaccess
, thì nó phải được đặt trước dòng # BEGIN WordPress
. Điều này đảm bảo rằng các quy tắc của bạn được thực thi trước khi WordPress áp dụng các quy tắc của nó, và tránh việc WordPress ghi đè hoặc thay đổi mã của bạn trong tương lai.
Ví dụ chèn đoạn mã vào đầu file .htaccess
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<Files xmlrpc.php> order deny,allow deny from all </Files> # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress |
Bằng cách chèn ở trước dòng # BEGIN WordPress
, bạn đảm bảo rằng quy tắc tùy chỉnh của bạn sẽ được thực hiện trước khi WordPress xử lý các quy tắc của riêng nó.
Khi xóa file xmlrpc.php, wordpress cập nhật lại, nó lại xuất hiện có đúng không? xmlrpc nghĩa là gì?
Khi xóa file xmlrpc.php
, liệu WordPress có tự động cập nhật lại và làm file xuất hiện lại không?
Không, WordPress sẽ không tự động tạo lại file xmlrpc.php
nếu bạn xóa nó. File xmlrpc.php
là một phần của mã nguồn WordPress gốc, nhưng khi bạn xóa thủ công, WordPress không tự động khôi phục nó khi cập nhật hoặc thay đổi cài đặt trang web. Nếu bạn cần sử dụng lại tính năng này, bạn sẽ phải cài đặt lại file bằng cách cập nhật toàn bộ mã nguồn WordPress hoặc tải lại từ bản cài đặt gốc.
XML-RPC nghĩa là gì?
XML-RPC là viết tắt của eXtensible Markup Language – Remote Procedure Call. Đây là một giao thức cho phép các ứng dụng tương tác với nhau qua mạng (remote). Giao thức này sử dụng XML để mã hóa các lời gọi hàm (RPC – Remote Procedure Calls) và sử dụng HTTP để truyền tải dữ liệu giữa các ứng dụng.
Cụ thể trong WordPress, XML-RPC cho phép các ứng dụng từ xa thực hiện một số thao tác như:
- Đăng bài viết từ xa.
- Quản lý và chỉnh sửa nội dung từ ứng dụng di động hoặc phần mềm bên ngoài.
- Pingbacks và trackbacks để thông báo các liên kết giữa các blog.
Tại sao XML-RPC lại trở thành vấn đề bảo mật?
- Giao thức này có thể bị khai thác để tấn công brute-force, DDoS, hoặc gửi hàng loạt yêu cầu không cần thiết đến máy chủ, do đó nhiều quản trị viên thường vô hiệu hóa hoặc xóa file
xmlrpc.php
nếu không sử dụng.
Khi bị xóa, trong trường hợp nào nó tự động tạo lại?
File xmlrpc.php
trong WordPress sẽ không tự động được tạo lại sau khi bị xóa, trừ khi bạn thực hiện một trong các thao tác sau:
- Cập nhật WordPress:
- Khi bạn cập nhật phiên bản WordPress mới, toàn bộ các file gốc của hệ thống (bao gồm cả
xmlrpc.php
) sẽ được cài đặt lại, vì quá trình cập nhật thường thay thế các file cốt lõi của WordPress.
- Khi bạn cập nhật phiên bản WordPress mới, toàn bộ các file gốc của hệ thống (bao gồm cả
- Cài đặt lại WordPress:
- Nếu bạn tiến hành cài đặt lại WordPress (từ giao diện quản trị hoặc thủ công), file
xmlrpc.php
sẽ xuất hiện trở lại như một phần của bộ cài đặt chuẩn.
- Nếu bạn tiến hành cài đặt lại WordPress (từ giao diện quản trị hoặc thủ công), file
- Sao chép hoặc khôi phục từ bản sao lưu:
- Nếu bạn khôi phục một bản sao lưu chứa file
xmlrpc.php
, file này cũng sẽ xuất hiện lại. Điều này có thể xảy ra nếu bạn sử dụng các công cụ sao lưu tự động hoặc khôi phục toàn bộ file từ một bản sao lưu cũ.
- Nếu bạn khôi phục một bản sao lưu chứa file
Làm sao để tránh xmlrpc.php
xuất hiện lại?
- Nếu bạn không muốn file
xmlrpc.php
tự động xuất hiện khi cập nhật WordPress, bạn có thể:- Vô hiệu hóa XML-RPC thay vì xóa file (bằng cách chặn nó trong
.htaccess
hoặc sử dụng plugin bảo mật). - Sử dụng plugin bảo mật: Các plugin như Disable XML-RPC hoặc Wordfence có thể giúp bạn vô hiệu hóa tính năng này mà không cần lo lắng về việc file xuất hiện trở lại sau các bản cập nhật.
- Vô hiệu hóa XML-RPC thay vì xóa file (bằng cách chặn nó trong