Tắt JSON REST API trong WordPress

19 giờ ago, Hướng dẫn WordPress, Views
Tắt JSON REST API trong WordPress

Tắt JSON REST API trong WordPress: Hướng dẫn toàn diện

Giới thiệu về JSON REST API trong WordPress

JSON REST API của WordPress là một công cụ mạnh mẽ cho phép các nhà phát triển truy cập và tương tác với dữ liệu WordPress thông qua các yêu cầu HTTP. Nó cho phép bạn xây dựng các ứng dụng web, ứng dụng di động và các tích hợp khác sử dụng dữ liệu từ trang web WordPress của bạn. Tuy nhiên, trong một số trường hợp, bạn có thể muốn tắt REST API này vì lý do bảo mật hoặc hiệu suất. Bài viết này sẽ hướng dẫn bạn qua các phương pháp khác nhau để tắt JSON REST API trong WordPress.

Lý do nên tắt JSON REST API

Mặc dù API REST mang lại nhiều lợi ích, nhưng cũng có một số lý do chính đáng để cân nhắc việc tắt nó:

  • Bảo mật: REST API có thể là một điểm yếu bảo mật tiềm ẩn. Nếu không được cấu hình và bảo vệ đúng cách, nó có thể bị khai thác để truy cập trái phép vào dữ liệu của bạn.
  • Hiệu suất: Nếu bạn không sử dụng API REST, việc vô hiệu hóa nó có thể giảm tải cho máy chủ và cải thiện hiệu suất trang web của bạn.
  • Giảm thiểu tấn công DDOS: REST API là mục tiêu phổ biến của các cuộc tấn công DDOS (tấn công từ chối dịch vụ phân tán). Tắt nó có thể giúp giảm thiểu rủi ro này.
  • Bảo vệ thông tin cá nhân: Một số thông tin nhạy cảm có thể được tiết lộ thông qua REST API. Vô hiệu hóa nó có thể giúp bảo vệ quyền riêng tư của người dùng.

Các phương pháp tắt JSON REST API trong WordPress

Có nhiều cách để tắt JSON REST API trong WordPress, từ sử dụng plugin đến chỉnh sửa trực tiếp tệp `functions.php`. Dưới đây là một số phương pháp phổ biến:

Sử dụng Plugin

Đây là phương pháp đơn giản và được khuyến nghị cho người dùng không chuyên về code. Có một số plugin miễn phí và trả phí cho phép bạn dễ dàng tắt hoặc hạn chế quyền truy cập vào REST API.

  • Disable REST API: Plugin này cho phép bạn vô hiệu hóa REST API hoàn toàn cho người dùng chưa đăng nhập, hoặc cho tất cả người dùng.
  • REST API Toolbox: Plugin này cung cấp nhiều tùy chọn hơn để kiểm soát REST API, bao gồm cả việc chặn các route cụ thể và giới hạn quyền truy cập.
  • Stop WP REST API: Một plugin đơn giản để vô hiệu hóa REST API cho người dùng chưa đăng nhập.

Hướng dẫn sử dụng Plugin Disable REST API:

1. Cài đặt và kích hoạt plugin “Disable REST API”.
2. Truy cập trang cài đặt của plugin (thường nằm trong phần “Settings” hoặc “Công cụ”).
3. Chọn tùy chọn bạn muốn:
* Disable REST API for non-logged in users: Vô hiệu hóa API cho người dùng chưa đăng nhập.
* Disable REST API completely: Vô hiệu hóa API cho tất cả người dùng.
4. Lưu các thay đổi.

Sử dụng code trong functions.php

Nếu bạn thoải mái với việc chỉnh sửa code, bạn có thể sử dụng đoạn code sau để tắt REST API bằng cách thêm nó vào tệp `functions.php` của theme (hoặc child theme) của bạn. **Lưu ý:** Việc chỉnh sửa trực tiếp tệp `functions.php` có thể gây ra sự cố nếu bạn không cẩn thận. Hãy đảm bảo bạn sao lưu tệp này trước khi thực hiện bất kỳ thay đổi nào.

Tắt REST API cho người dùng chưa đăng nhập:

“`php
add_filter( ‘rest_authentication_errors’, function( $result ) {
if ( ! is_user_logged_in() ) {
return new WP_Error( ‘rest_not_logged_in’, ‘Bạn không được phép truy cập REST API.’, array( ‘status’ => 401 ) );
}
return $result;
});
“`

Đoạn code này kiểm tra xem người dùng đã đăng nhập hay chưa. Nếu chưa đăng nhập, nó sẽ trả về một lỗi với mã trạng thái 401 (Unauthorized).

Tắt hoàn toàn REST API:

“`php
add_filter( ‘rest_authentication_errors’, function( $result ) {
return new WP_Error( ‘rest_disabled’, ‘REST API đã bị vô hiệu hóa.’, array( ‘status’ => 403 ) );
});
“`

Đoạn code này trả về một lỗi với mã trạng thái 403 (Forbidden) cho tất cả các yêu cầu REST API.

Lưu ý quan trọng:

* Sử dụng child theme để tránh mất các thay đổi của bạn khi cập nhật theme chính.
* Kiểm tra trang web của bạn sau khi thêm code để đảm bảo mọi thứ vẫn hoạt động bình thường.

Sử dụng .htaccess (Chỉ chặn truy cập, không tắt hoàn toàn)

Phương pháp này chặn truy cập trực tiếp vào API thông qua trình duyệt, nhưng không tắt hoàn toàn API. API vẫn có thể được truy cập thông qua các phương tiện khác, như Curl hoặc các ứng dụng.

Thêm đoạn code sau vào tệp `.htaccess` của bạn:

“`

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-json/.* [OR]
RewriteCond %{QUERY_STRING} rest_route=/ [NC]
RewriteRule ^(.*)$ – [F,L]

“`

Đoạn code này sử dụng mod_rewrite để chặn bất kỳ yêu cầu nào đến `/wp-json/` (điểm cuối của API REST) hoặc có tham số `rest_route` trong chuỗi truy vấn. Nó trả về lỗi 403 (Forbidden).

Sử dụng mu-plugins (Must-Use Plugins)

mu-plugins là các plugin được tự động kích hoạt và không thể tắt thông qua giao diện quản trị WordPress. Chúng được lưu trữ trong thư mục `/wp-content/mu-plugins/`.

1. Tạo một thư mục tên là `mu-plugins` trong thư mục `/wp-content/`. (Nếu nó chưa tồn tại).
2. Tạo một tệp PHP mới, ví dụ: `disable-rest-api.php`, và đặt nó trong thư mục `mu-plugins`.
3. Thêm đoạn code sau vào tệp `disable-rest-api.php`:

“`php
403 ) );
});
“`

Ưu điểm của phương pháp này là plugin sẽ luôn được kích hoạt, ngay cả khi bạn cập nhật theme hoặc plugin khác.

Kiểm tra xem REST API đã được tắt thành công hay chưa

Sau khi bạn đã tắt REST API bằng một trong các phương pháp trên, bạn nên kiểm tra để đảm bảo rằng nó đã được vô hiệu hóa thành công.

* Sử dụng trình duyệt: Mở trình duyệt và truy cập vào điểm cuối của REST API, ví dụ: `yourwebsite.com/wp-json/wp/v2/posts`. Bạn sẽ thấy một thông báo lỗi (thường là 403 Forbidden hoặc 401 Unauthorized).
* Sử dụng công cụ dòng lệnh (Curl): Sử dụng lệnh `curl` để gửi yêu cầu đến điểm cuối của REST API: `curl yourwebsite.com/wp-json/wp/v2/posts`. Bạn sẽ thấy một thông báo lỗi trong phản hồi.
* Kiểm tra nhật ký máy chủ: Xem nhật ký máy chủ của bạn để xem có bất kỳ lỗi liên quan đến REST API hay không.

Cân nhắc trước khi tắt REST API

Trước khi bạn tắt REST API, hãy cân nhắc những điều sau:

  • Chức năng trang web: Một số theme và plugin có thể sử dụng REST API. Tắt nó có thể làm hỏng chức năng của trang web của bạn.
  • Ứng dụng di động: Nếu bạn có ứng dụng di động sử dụng REST API để truy cập dữ liệu WordPress, việc tắt nó sẽ làm ứng dụng không hoạt động.
  • Tích hợp: Nếu bạn có bất kỳ tích hợp nào với các dịch vụ bên ngoài sử dụng REST API, việc tắt nó sẽ làm gián đoạn các tích hợp đó.

Hãy đảm bảo bạn hiểu rõ hậu quả trước khi tắt REST API. Nếu bạn không chắc chắn, tốt nhất là nên tham khảo ý kiến của một nhà phát triển web.

Kết luận

Việc tắt JSON REST API trong WordPress có thể là một biện pháp bảo mật hữu ích và cải thiện hiệu suất, nhưng cần được thực hiện cẩn thận. Hãy cân nhắc các lý do và hậu quả trước khi đưa ra quyết định. Sử dụng các phương pháp được mô tả trong bài viết này để tắt REST API một cách an toàn và hiệu quả. Luôn sao lưu trang web của bạn trước khi thực hiện bất kỳ thay đổi nào đối với tệp `functions.php` hoặc `.htaccess`.