Bạn đang tìm cách nhanh chóng để vô hiệu hóa XML-RPC của WordPress? Trước khi làm điều đó, hãy cân nhắc lý do bạn muốn thực hiện.
Có thể bạn còn nhiều thắc mắc khác:
- xmlrpc.php là gì?
- Mức độ rủi ro bảo mật của nó lớn đến đâu?
- Vô hiệu hóa xmlrpc.php có tự động giải quyết mối đe dọa không?
Trong bài viết này, chúng tôi sẽ trả lời tất cả các câu hỏi trên và nhiều hơn nữa.
Website của bạn có bị hack do XML-RPC không?
Câu trả lời là không.
Đang xảy ra là hacker đang cố gắng truy cập website của bạn bằng cách thử các tổ hợp tên người dùng và mật khẩu. Đừng hoảng loạn, website của bạn chưa bị hack.
Chúng tôi thấy hầu như mọi trang web đều trải qua tình trạng này. Nếu bạn sử dụng mật khẩu mạnh, khả năng bị hack do các cuộc tấn công này là tối thiểu. Trong hơn 10.000 trang web bị hack chúng tôi đã thấy, dưới 5% bị hack do các cuộc tấn công như vậy.
Tuy nhiên, các cuộc tấn công này – gọi là tấn công brute force – tiêu tốn tài nguyên máy chủ. Ngay cả khi bạn đã bảo vệ trang đăng nhập và trang quản trị, các cuộc tấn công này bỏ qua hoàn toàn các trang đó, khiến máy chủ bị quá tải.
Để ngăn chặn điều này, việc cài đặt một tường lửa tốt là rất quan trọng.
XML-RPC là gì?
XML-RPC là một tính năng của WordPress cho phép truyền dữ liệu giữa WordPress và các hệ thống khác. Nó đã được thay thế phần lớn bởi REST API, nhưng vẫn được bao gồm trong bản cài đặt để tương thích ngược.
XML-RPC cho phép ứng dụng của bên thứ ba đăng nội dung lên website WordPress của bạn. Ví dụ, nếu bạn sử dụng ứng dụng WordPress trên điện thoại để đăng bài từ smartphone, XML-RPC cho phép bạn làm điều đó.
Nhưng đó chưa phải là tất cả. WordPress cũng dùng nó để giao tiếp với các nền tảng blog khác. Nó cho phép trackback và pingback.

Nó thậm chí còn chạy phiên bản cũ hơn của plugin Jetpack.
WordPress thường dùng nó để kết nối với ứng dụng WordPress di động. Nếu bạn từng dùng ứng dụng này, bạn sẽ nhớ là phải kích hoạt XML-RPC.

Điều lạ nhất là WordPress không còn sử dụng XML-RPC nữa. Từ khi phát hành REST API riêng, WordPress đã ngừng sử dụng cơ sở mã cũ này.
Lý do duy nhất khiến bản cài đặt WordPress của bạn vẫn có file xmlrpc.php là để tương thích ngược. Nói đơn giản, nó chỉ dành cho các website vẫn chạy trên phiên bản WordPress rất cũ!
Nếu bạn đang trong trường hợp này, chúng tôi khuyên bạn nên sao lưu website ngay lập tức và cập nhật core WordPress, theme và plugin. Giữ các phiên bản WordPress cũ có thể gây rủi ro bảo mật lớn hơn hacker cố gắng kết nối với xmlrpc.php.
Tóm lại, bạn có thể vô hiệu hóa XML-RPC trên WordPress an toàn nếu phiên bản WordPress của bạn cao hơn 4.7. Nó thậm chí không ảnh hưởng đến Jetpack nếu bạn đang dùng plugin này. Nhưng trong khi việc vô hiệu hóa XML-RPC an toàn về bản thân nó, thì nó không giúp bảo vệ trang web của bạn khỏi hacker.
Tại sao hacker tấn công XML-RPC?
Nếu bạn từng dùng ứng dụng WordPress di động, bạn sẽ nhớ rằng nó yêu cầu bạn đăng nhập vào website trước khi có thể thực hiện thay đổi. Đăng nhập này diễn ra bằng cách gửi thông tin xác thực đến script xmlrpc.php, sau đó xác thực và xác minh thông tin truy cập.
Hacker cơ bản làm điều tương tự: cố gắng đăng nhập vào website của bạn bằng cách gửi thông tin xác thực truy cập đến script xmlrpc.php. Rủi ro lớn nhất là nếu mật khẩu của bạn yếu và dễ đoán. Đó là lúc XML-RPC trở thành vấn đề bảo mật.
Ngoài ra, bạn đối mặt với khả năng máy chủ bị quá tải – điều vẫn không tốt, nhưng dễ dàng giải quyết bằng tường lửa.
WordPress 4.7 và các phiên bản cao hơn sử dụng REST API để kết nối với ứng dụng bên ngoài, dùng một dạng xác thực gọi là OAuth token. OAuth là cách rất an toàn để kết nối với ứng dụng bên ngoài. Phương pháp của XML-RPC dùng trực tiếp tên người dùng và mật khẩu không an toàn chút nào.
Được đủ thời gian, hacker hoặc bot có thể gửi các biến thể của tên người dùng và mật khẩu để kết nối với xmlrpc.php cho đến khi đoán đúng.

Điều này gọi là tấn công brute force.
Vấn đề bảo mật lớn khác với XML-RPC là nó được dùng cho pingback – cảnh báo trên WordPress khi ai đó liên kết đến nội dung của bạn. Mối đe dọa là hacker có thể gửi hàng loạt pingback đến trang web của bạn.

Loại tấn công này, gọi là tấn công DDoS, có thể làm quá tải máy chủ, cạn kiệt tài nguyên và khiến website của bạn bị nhà cung cấp hosting treo tài khoản!
Lại một lần nữa, REST API đã thay thế chức năng này. Vì vậy, nếu bạn thích pingback, bạn vẫn có thể vô hiệu hóa XML-RPC trên WordPress an toàn.
Nếu bạn lo lắng rằng mình có thể thuộc nhóm 5% và website có thể bị hack, hãy dùng trình quét mã độc miễn phí của chúng tôi ngay bây giờ để loại bỏ khả năng đó.
Bạn có nên vô hiệu hóa XML-RPC không?
Chúng tôi không khuyến khích vô hiệu hóa XML-RPC.
Lý do?
Đơn giản – vô hiệu hóa file PHP không mang lại lợi ích gì. Vô hiệu hóa XML-RPC không loại bỏ hacker và bot. Nó chỉ chuyển hướng sự chú ý của chúng sang wp-login.php để thực hiện tấn công brute force.
Thứ hai, plugin sẽ làm chậm website của bạn, vì nó phải tải lên để chặn yêu cầu.
Việc bảo vệ website quan trọng hơn, và nếu bạn đã đọc đến đây, bạn có thể đoán chúng tôi sẽ đề xuất cài đặt tường lửa. Đúng, giải pháp kinh điển đó.
Cách vô hiệu hóa XML-RPC trên WordPress?
Giống như mọi việc trong WordPress, bạn có thể vô hiệu hóa XML-RPC theo hai cách:
- Sử dụng plugin
- Không dùng plugin
Trong hầu hết các trường hợp, chúng tôi thường khuyên dùng plugin để làm hầu hết mọi thứ trên WordPress. Thay đổi mã thủ công trên backend có thể dẫn đến thảm họa. Đây là trường hợp hiếm hoi chúng tôi không khuyến khích cả hai phương pháp, nhưng chúng tôi vẫn sẽ chỉ cho bạn cả hai cách phòng khi bạn cần.
Hãy thực hiện thận trọng, và sao lưu website trước khi làm bất cứ điều gì.
Bước 1: Kiểm tra xem XML-RPC có đang bật trên website không
Dù bản cài đặt WordPress của bạn có kèm xmlrpc.php, không có nghĩa là nó vẫn đang bật. Trước khi tiến hành vô hiệu hóa, bạn nên kiểm tra xem nó có còn hoạt động trên website không.
Sử dụng Dịch vụ xác thực XML-RPC của WordPress. Ứng dụng này sẽ kiểm tra website và cho bạn biết xmlrpc.php có đang bật không.

Nếu bạn làm tương tự cho MalCare, bạn sẽ thấy thông báo lỗi 403 vì chúng tôi có tường lửa.

Bước 2: Vô hiệu hóa XML-RPC trên website
Đã đến lúc vô hiệu hóa XML-RPC trên WordPress của bạn một lần cho tất cả.
Chúng tôi sẽ chỉ cho bạn cách làm bằng hai phương pháp. Mặc dù không khuyến khích vô hiệu hóa file, chúng tôi vẫn khuyên bạn dùng plugin nếu bạn quyết tâm làm điều này.
Phương án A: Sử dụng plugin
Có rất nhiều plugin để vô hiệu hóa XML-RPC. Chúng tôi khuyên dùng plugin REST XML-RPC Data Checker.
Lưu ý website sẽ chậm lại vì plugin phải tải để chặn yêu cầu. Ngoài ra, hacker sẽ chuyển sang tấn công file wp-login.php. Vì vậy, điều này không đạt được gì về mặt bảo mật. Nếu muốn bảo vệ thực sự, chúng tôi đề xuất cài đặt plugin tường lửa nâng cao MalCare.
Sau khi cài plugin, vào Cài đặt > REST XML-RPC Data Checker.
Sau đó nhấp vào tab XML-RPC:

Bạn có thể vô hiệu hóa giao diện API, khả năng định dạng bài viết, pingback và trackback. Lợi thế thêm là bạn có thể thêm người dùng tin cậy vẫn có thể dùng XML-RPC hoặc danh sách IP tin cậy không bị chặn.
Nhanh và hiệu quả! Chúng tôi không khuyên can thiệp vào tab REST. Chỉ cần để mọi thứ mặc định.
Phương án B: Không dùng plugin
Đây là phương án tồi tệ nhất. Chúng tôi khuyên bạn bỏ qua phần này và sang phần tiếp theo nơi chúng tôi dạy cách thực sự phòng thủ chống tấn công XML-RPC.
Nhưng nếu bạn quyết tâm vô hiệu hóa thủ công, chúng tôi mạnh mẽ khuyên bạn sao lưu đầy đủ website trước.
Tùy vào loại máy chủ, bạn làm theo một trong hai phương pháp sau:
Vô hiệu hóa XML-RPC WordPress bằng .htaccess
Dán đoạn mã sau vào file .htaccess:
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>
Trong dòng 5 'allow from xxx.xxx.xxx.xxx', thay thế các x bằng địa chỉ IP của bạn nếu muốn giữ XML-RPC từ một IP cụ thể. Nếu không, bạn có thể xóa dòng này.
Nếu website dùng Apache, bạn có thể kết nối máy chủ qua cPanel hoặc FTP. Trong cả hai trường hợp, bạn đều truy cập được file .htaccess.
Vô hiệu hóa XML-RPC WordPress bằng .config
Đối với website chạy trên Nginx, thêm mã sau vào file Nginx.config:
location ~* ^/xmlrpc.php$ {
return 403;
}
Hoặc bạn có thể nhờ nhà cung cấp hosting vô hiệu hóa XML-RPC giúp bạn.
Vô hiệu hóa XML-RPC WordPress bằng Filter
Thay vào đó, bạn có thể thêm filter vào bất kỳ plugin nào:
add_filter('xmlrpc_enabled', '__return_false');
Bạn có thể làm tương tự từ file functions.php của theme nhưng viết plugin là cách tốt hơn. Cách này hoạt động trên mọi loại máy chủ.
Lại một lần nữa, không có phương án nào thực sự hữu ích, và thay đổi thủ công không bao giờ là ý tưởng tốt. Vì vậy, nếu bạn buộc phải làm, hãy có bản sao lưu WordPress sẵn sàng phòng khi sự việc xấu xảy ra.
Cách ngăn chặn tấn công XML-RPC?
Đây là phần quan trọng nhất trong bài viết và khá dài. Chúng tôi quyết định chia thành nhiều bước hành động cụ thể để bạn ngăn chặn tấn công XML-RPC.
Bước 1: Kiểm tra xem website đã bị hack chưa
Có khả năng lớn website của bạn chưa bị hack.
Nhưng bạn vẫn cần xác nhận phòng khi đã bị. Nếu website thực sự bị hack, bạn cần xóa mã độc trước, nếu không vô hiệu hóa XML-RPC sẽ vô nghĩa.
Cách đơn giản nhất để xác nhận là dùng trình quét mã độc miễn phí MalCare. Trình quét của MalCare thiết lập rất nhanh và có thể phát hiện ngay cả mã độc chưa biết trong vài giây.
Nếu thấy cảnh báo trang web bị hack trên MalCare, bạn chỉ cần nhấn nút 'Autoclean'.

MalCare xử lý toàn bộ quá trình xóa mã độc trong 60 giây.
Bước 2: Cài đặt tường lửa WordPress
Đây là cách đúng để xử lý lỗ hổng XML-RPC. Dùng tường lửa WordPress có khả năng chặn bot cố gắng kết nối với xmlrpc.php.
Vô hiệu hóa file không có tác dụng. Hacker chỉ đơn giản chuyển sang cố gắng hack wp-login.php.
Vấn đề duy nhất là tường lửa thường có hiệu lực quá muộn. Mỗi lần hacker cố gắng hack bằng cách kết nối với xmlrpc.php hoặc wp-login.php, toàn bộ trang WordPress được tải cùng lúc.
Đó chính xác là lý do chúng tôi khuyên dùng tường lửa nâng cao MalCare:
- Chống bot và hacker trước khi website tải
- Không làm chậm tốc độ tải như Cloudflare
- Cập nhật liên tục cơ sở dữ liệu IP độc hại bằng cách học từ mạng lưới 250.000+ website được bảo vệ
Nếu website được bảo vệ bởi MalCare, tất cả bot và hacker nhận được khi cố gắng kết nối XML-RPC hoặc WP-Login chỉ là lỗi 403. Lỗi như vậy có thể khiến hacker nản chí không tiếp tục.
Tại sao mọi người khuyên bạn vô hiệu hóa XML-RPC?
Nhiều lý do. Hãy xem từng lý do để hiểu tại sao ai đó (có, blog quản trị WordPress cũng tính) khuyên theo hướng đó. (Dù đó là giải pháp "băng keo" hơn.)
Một trong những lý do lớn nhất khiến nhiều độc giả (như bạn) muốn vô hiệu hóa XML-RPC là họ gặp vấn đề tài nguyên máy chủ. Khi xem log, bạn có thể thấy rất nhiều lượt truy cập file xmlrpc.php.
Có thể bạn dùng Jetpack và gặp lỗi cấu hình khi cài Jetpack. Bạn tìm kiếm file lạ này, đọc nhiều thứ về việc nó là một lỗ hổng.

Hoặc bạn dùng trình quét, nó ném ra cảnh báo như sau:

Đó là ảnh chụp màn hình nhật ký truy cập Wordfence.
Plugin bảo mật cho thấy bot đang cố gắng hack trang web của bạn qua XML-RPC trên WordPress. Vì vậy, bản năng tự nhiên là vô hiệu hóa hoàn toàn tùy chọn này.
Những gì bạn không nên làm và tại sao?
Chặn địa chỉ IP (Blacklist IP)
Bạn có thể nghĩ chặn IP thủ công là cách tốt để chặn hacker. Thực tế, nhiều "chuyên gia" bảo mật bảo như vậy. Nhưng nó không hoạt động. Nếu bạn chặn một IP, bot brute force chỉ cần dùng IP khác để tấn công.
Xóa file XML-RPC
Đừng bao giờ nghĩ đến việc xóa file xmlrpc.php khỏi cài đặt WordPress. Nó sẽ phá hỏng website hoàn toàn và ngay cả khi không bị hỏng, file sẽ xuất hiện lại khi bạn cập nhật WordPress.
Tiếp theo làm gì?
Cải thiện bảo mật WordPress không phải việc làm một lần xong. Cài tường lửa là khởi đầu tốt, nhưng chúng tôi khuyên bạn nên làm kiểm toán bảo mật đầy đủ để tìm ra những gì khác có thể cải thiện.
Nếu bạn đã cài MalCare, bạn sẽ thấy nhiều gợi ý trong bảng điều khiển trực quan. Chỉ cần quét bảo mật và làm theo hướng dẫn.
Bạn sẽ nhanh chóng thấy việc tăng cường bảo mật WordPress là ý tưởng tốt. Lại một lần, chỉ cần làm theo hướng dẫn để hoàn thành trong vài cú nhấp chuột.
Khía cạnh quan trọng khác của bảo mật là luôn cập nhật thông tin.
Nếu có lỗ hổng WordPress mới, bạn cần biết và采取措施预防 trước khi nó ảnh hưởng đến website của bạn.
Câu hỏi thường gặp
XML-RPC là gì?
XML-RPC là viết tắt của XML Remote Call Procedure. Đây là giao thức được các hệ thống blog cũ dùng để kết nối với blog qua kết nối HTTP với mã hóa XML. Nói đơn giản, đó là giao thức cho phép người dùng kết nối từ xa với nền tảng blog như WordPress.
XML-RPC dùng để làm gì?
XML-RPC là cách kết nối từ xa đến WordPress từ ứng dụng bên thứ ba như ứng dụng WordPress di động. Nó cũng gửi thông báo mỗi khi ai đó liên kết đến bài viết của bạn thông qua trackback và pingback.
Làm thế nào để vô hiệu hóa XML-RPC?
Bạn có thể vô hiệu hóa XML-RPC bằng plugin như REST XML-RPC Data Checker. Tuy nhiên, vô hiệu hóa XML-RPC không ngăn hacker cố gắng hack website WordPress của bạn. Để ngăn chặn tấn công, bạn nên cài đặt plugin tường lửa nâng cao MalCare.
Tôi có CAPTCHA hoặc 2FA. Chúng có thể vẫn bẻ khóa mật khẩu qua XML-RPC?
Plugin CAPTCHA và Xác thực hai yếu tố (2FA) dành cho bảo mật bổ sung. Chúng không cung cấp bảo vệ thực sự chống hack XML-RPC.
Hầu hết plugin CAPTCHA và 2FA WordPress chỉ bảo mật trang đăng nhập WordPress, không phải script XML-RPC. Hãy kiểm tra kỹ với plugin bảo mật của bạn để đảm bảo nó ngăn chặn đăng nhập qua XML-RPC.
Tôi có thể chặn IP độc hại (blacklist IP) không?
Điều này nghe có vẻ giải pháp rõ ràng – chỉ chặn IP của hacker và bạn sẽ an toàn.
Đừng tin vào ý tưởng này. Giống như chơi đập chuột với hacker. Họ sẽ liên tục đổi IP và tấn công trang web của bạn bằng IP khác. Không có hồi kết.
Chỉ có thứ như tường lửa MalCare mới giúp bạn. Nó đi kèm Bảo vệ Bot sẽ tự động chặn IP độc hại theo quốc gia hoặc thiết bị. Tường lửa nâng cao học từ 250.000+ trang web trên mạng lưới và nhận diện bot/IP độc hại trước khi chúng kịp tấn công. Tất cả điều này mà không làm chậm trang web.
Tuy nhiên, nếu bạn vẫn muốn chặn IP độc hại một by một đến cuối đời, bài viết này sẽ giúp bạn.
Tôi không thể chỉ xóa file XML-RPC được sao? WordPress không còn dùng nó nữa.
Đừng làm điều này. Ngay cả khi file XML-RPC bị thiếu, trang web của bạn vẫn bị quá tải bởi bot cố gắng kết nối. Rủi ro lớn hơn là xóa file core WordPress tùy tiện có thể phá hỏng trang web hoàn toàn.
Phần tồi tệ nhất là xmlrpc.php sẽ được cài lại trong lần cập nhật WordPress tiếp theo, làm vô nghĩa việc xóa file.