Email Doanh NghiệpSSLFirewall Anti DDoS

NỘI DUNG

Banner blog lễ 30.4 và 1.5

WordPress Nonce là gì? Hướng dẫn triển khai và sử dụng Nonce trong WordPress

Hưng Nguyễn

Đã kiểm duyệt nội dung

Ngày đăng:19/12/2025
Lượt xem

Quy trình sản xuất nội dung

Đánh giá

[esi kkstarratings cache="private" ttl="3"]
Speed optimizer 2

WordPress Nonce là một mã bảo mật tạm thời, được sinh ra bởi hệ thống WordPress nhằm xác thực và bảo vệ các thao tác nhạy cảm như gửi form, thay đổi cấu hình, xóa hoặc chỉnh sửa dữ liệu trên trang web. Trong bài viết này mình sẽ giúp bạn hiểu rõ hơn về WordPress Nonce, từ cách thức hoạt động, lợi ích nổi bật, đến quy trình triển khai và một số lưu ý quan trọng cần nắm khi triển khai.

Những điểm chính

  • Khái niệm: Hiểu rõ WordPress Nonce là một mã bảo mật đặc biệt, giúp bạn nhận biết vai trò của nó trong việc bảo vệ các thao tác nhạy cảm khỏi các cuộc tấn công CSRF.
  • Cách thức hoạt động: Nắm vững cơ chế hoạt động của Nonce, giúp bạn hiểu rõ cách nó xác minh tính hợp lệ của mỗi yêu cầu để ngăn chặn các hành vi giả mạo và không mong muốn.
  • Lợi ích chính: Nhận thức được các lợi ích cốt lõi như chống tấn công CSRF và tăng cường bảo mật, giúp bạn hiểu rõ tầm quan trọng của việc triển khai Nonce trong mọi dự án WordPress.
  • Hướng dẫn triển khai: Nắm vững các bước triển khai cụ thể từ việc tạo, thêm vào form/URL cho đến xác minh, giúp bạn có thể tự tin áp dụng Nonce vào theme và plugin của mình một cách chính xác.
  • Các hàm phổ biến: Tìm hiểu về các hàm WordPress chuyên dụng, giúp bạn lựa chọn và sử dụng đúng công cụ để tạo và xác minh Nonce trong từng tình huống cụ thể.
  • Lưu ý quan trọng: Nắm được những lưu ý quan trọng như ảnh hưởng của cache và giới hạn về thời gian, giúp bạn triển khai Nonce một cách hiệu quả và tránh được các lỗi bảo mật không đáng có.
  • Giới thiệu Vietnix: Biết thêm Vietnix là nhà cung cấp Hosting uy tín, cung cấp nền tảng tối ưu để website WordPress hoạt động an toàn và bảo mật.
  • Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến WordPress Nonce.
những điểm chính

WordPress Nonce là gì?

WordPress Nonce là một mã token bảo mật đặc biệt được WordPress sinh ra nhằm bảo vệ các thao tác và dữ liệu trọng yếu khỏi những hành động không hợp lệ hoặc các cuộc tấn công tiềm ẩn, phổ biến nhất là tấn công giả mạo yêu cầu giữa các trang (CSRF). Nonce thường là một chuỗi ký tự duy nhất, có hạn sử dụng trong một khoảng thời gian nhất định, được gắn vào các URL, biểu mẫu hoặc các yêu cầu AJAX trên website WordPress.

WordPress Nonce là một mã token bảo mật đặc biệt được WordPress sinh ra để chống cuộc tấn công tiềm ẩn
WordPress Nonce là một mã token bảo mật đặc biệt được WordPress sinh ra để chống cuộc tấn công tiềm ẩn

Trong WordPress, nonce không phải là một giá trị ngẫu nhiên hoàn toàn mà nó được tạo ra dựa trên một thuật toán kết hợp các yếu tố như user ID, thời gian và một khóa bí mật của website. Mục đích chính của nonce là xác minh rằng yêu cầu gửi đến server thực sự được khởi phát từ một người dùng đã xác thực và đúng ngữ cảnh, chứ không phải từ bên ngoài hay bị kẻ xấu lợi dụng.

Nonce giúp ngăn chặn những hành vi bất hợp pháp như gửi lại form nhiều lần, thực thi các thao tác không mong muốn, hay làm mất an toàn cho dữ liệu trang. Khi phát triển plugin, theme hoặc các chức năng liên quan đến thao tác ghi dữ liệu, xoá dữ liệu hay make action quan trọng, việc sử dụng nonce là tiêu chuẩn bắt buộc để tăng cường bảo mật cho website WordPress.

Trong khi việc áp dụng các biện pháp bảo mật ở cấp độ mã nguồn như nonce là một tiêu chuẩn bắt buộc, hiệu suất và sự an toàn tổng thể của website còn phụ thuộc rất lớn vào nền tảng hạ tầng máy chủ. Do đó, việc lựa chọn một giải pháp chuyên biệt như hosting cho WordPress của Vietnix trở thành một yếu tố then chốt, bởi nó mang lại một môi trường được tối ưu sâu về hiệu suất lẫn bảo mật, giúp website hoạt động ổn định và an toàn hơn.

img sp wphosting 1

TĂNG TỐC TỐI ĐA Với Hosting WORDPRESS

Nâng tầm website WordPress của bạn: Nhanh, ổn định và an toàn hơn

Cách Nonce bảo vệ website

Nonce bảo vệ website WordPress bằng cách xác minh tính hợp lệ và nguồn gốc của mỗi yêu cầu thực hiện các hành động nhạy cảm, giúp ngăn chặn hiệu quả các cuộc tấn công giả mạo yêu cầu cũng như hạn chế thao tác không mong muốn từ phía người dùng hoặc bên thứ ba. Khi một thao tác như cập nhật, xóa dữ liệu, gửi form, hoặc thực hiện request AJAX được thực hiện trên website, hệ thống sẽ tạo ra một nonce gắn kèm vào đường dẫn URL, biểu mẫu hoặc payload của request đó.

Đến khi yêu cầu được gửi về máy chủ, mã nonce sẽ được kiểm tra tính hợp lệ bằng hàm xác thực của WordPress. Nếu mã nonce đúng và chưa hết hạn, thao tác mới được phép thực thi; nếu sai hoặc mã đã hết hạn, yêu cầu sẽ bị từ chối. Việc này đảm bảo rằng mỗi thao tác chỉ được tiến hành nếu xuất phát từ đúng người dùng, đúng phiên làm việc và đúng ngữ cảnh đang hoạt động trên website. Hacker, robot hoặc các bên thứ ba cố tình giả mạo yêu cầu sẽ không có khả năng tạo nonce hợp lệ vì không có quyền truy cập hợp pháp vào key tạo nonce cũng như session của người dùng.

Hệ thống tạo ra một nonce gắn kèm vào đường dẫn URL
Hệ thống tạo ra một nonce gắn kèm vào đường dẫn URL

Lợi ích của việc sử dụng Nonce

Việc sử dụng Nonce trong WordPress mang lại nhiều lợi ích quan trọng cho bảo mật và trải nghiệm quản trị:

  • Bảo vệ chống lại tấn công CSRF: Nonce là giải pháp hiệu quả để ngăn chặn tấn công giả mạo yêu cầu giữa các trang. Khi có nonce đi kèm, mỗi thao tác như xóa bài viết, gửi form hoặc thực thi hành động qua URL đều được xác minh mã token hợp lệ trước khi xử lý, giúp đảm bảo rằng chỉ các yêu cầu xuất phát từ người dùng hợp lệ mới được thực hiện, giảm thiểu nguy cơ bị kẻ xấu lợi dụng cookie xác thực.
  • Tăng cường bảo mật cho plugin và theme: Khi phát triển plugin hoặc theme WordPress, các lập trình viên nên sử dụng nonce cho mọi hành động chỉnh sửa, cập nhật, xóa dữ liệu hay thay đổi cài đặt. Nhờ đó, mọi thao tác từ phía người dùng đều phải trải qua xác minh mã nonce, giúp ngăn chặn những hành vi khai thác lỗ hổng bảo mật hoặc thao tác không đúng quyền.
  • Xác thực nguồn gốc yêu cầu: Nonce giúp nhận diện rõ ràng các request gửi về máy chủ xuất phát từ đâu, đảm bảo rằng chỉ những thao tác được phát sinh từ chính giao diện quản trị hoặc form hợp lệ trên website mới có thể được thực thi.
  • Ngăn chặn việc gửi lại forms ngẫu nhiên: Nonce được chèn vào mỗi lần gửi form, ngăn tình trạng gửi trùng lặp hay spam thao tác không mong muốn. Nhờ đó, dữ liệu không bị thay đổi hoặc ghi đè ngoài dự kiến nếu người dùng bấm nhiều lần nút submit.
Sử dụng Nonce trong WordPress mang lại nhiều lợi ích cho bảo mật
Sử dụng Nonce trong WordPress mang lại nhiều lợi ích cho bảo mật

Tạo nonce

Nonce thường được tạo bằng hàm wp_create_nonce($action), trong đó $action là chuỗi xác định hành động bạn muốn bảo vệ.

Ví dụ:

$nonce = wp_create_nonce('delete_post_' . $post->ID);

Nonce này sẽ được dùng để xác thực tính hợp lệ của thao tác xóa bài viết.

Thêm nonce vào URL

Để bảo vệ các liên kết (ví dụ: link xóa bài viết), hãy chèn nonce vào chuỗi truy vấn bằng wp_nonce_url():

$nonce_url = wp_nonce_url($url, 'delete_post_' . $post->ID);

Hàm này sẽ sinh ra URL với tham số nonce kèm theo để xác thực khi thực hiện thao tác.

Thêm nonce vào biểu mẫu (form)

Dùng hàm wp_nonce_field($action, $name) để thêm một hoặc nhiều trường ẩn nonce vào form.

<form method="post">
    <?php wp_nonce_field('contact_form_submit', 'cform_generate_nonce'); ?>
    <!-- Các input khác -->
</form>

Trường nonce sẽ đi cùng dữ liệu khi gửi form, giúp kiểm tra bảo mật.

Demo bảo vệ phương thức Summit Form

Bạn cài plugin demo form cho WordPress từ link sau: https://github.com/owthub/wp-next-plugin/archive/refs/heads/master.zip.

Sau khi kích hoạt plugin, trong admin sẽ xuất hiện giao diện form đơn giản tại mục Add Student.

Mục Add Student
Mục Add Student

Tiếp theo, bạn truy cập mã nguồn plugin qua File Manager theo đường dẫn: tringuyen.tech/wp-content/plugins/wp-next-plugin-master/views/add-student.php.

Trong file này, bạn chèn thêm hàm tạo nonce của WordPress như sau:

<?php wp_nonce_field('student_action_nonce', 'student_name_nonce'); ?>
Chèn thêm hàm tạo nonce của WordPress
Chèn thêm hàm tạo nonce của WordPress

Cuối cùng, bạn mở trang web, nhấn F12 để bật Developer Tools và kiểm tra phần HTML của form, tại đó sẽ thấy field chứa WordPress nonce được tạo phục vụ cho action submit.

Kểm tra phần HTML của form
Kểm tra phần HTML của form

Tạo nonce cho AJAX

Nonce có thể được thêm vào payload của request AJAX thông qua trường ẩn trong form hoặc biến JavaScript để xác thực ở server. Khi xử lý AJAX, sử dụng hàm check_ajax_referer() để kiểm tra nonce bên phía server.

Xác minh nonce

Khi nhận request, kiểm tra tính hợp lệ của nonce trước khi xử lý logic, bạn dùng các hàm sau:

  • Đối với biểu mẫu và URL trong admin:
check_admin_referer('delete_post_' . $post->ID);
// Ngoài ra, nếu truyền nonce bằng tên khác:
check_admin_referer('delete_post_' . $post->ID, 'custom_nonce_name');
  • Đối với AJAX request:
check_ajax_referer('process_action');
  • Đối với các trường hợp kiểm tra nonce tùy chỉnh:
if ( ! isset($_POST['your_nonce_field']) || ! wp_verify_nonce($_POST['your_nonce_field'], 'your_nonce_action') ) {
    // Nonce không hợp lệ, dừng xử lý
    wp_die('Thao tác không hợp lệ');
} else {
    // Thao tác an toàn, xử lý tiếp
}

Demo tiếp ví dụ phía trên:

Bạn tạo thêm bước check_ajax_referer để xác minh nonce; nếu nonce hợp lệ, hệ thống in ra thông báo “WordPress nonce valid” và tiếp tục xử lý logic còn lại, ngược lại sẽ trả về giá trị “-1” theo mặc định của hàm.

Check_ajax_referer để xác minh nonce
Check_ajax_referer để xác minh nonce
Điền thông tin
Điền thông tin
Thông báo WordPress nonce valid
Thông báo WordPress nonce valid

Trường hợp WordPress nonce không hợp lệ:

Nonce được thêm vào chuỗi qwerty đằng sau chuỗi ban đầu
Nonce được thêm vào chuỗi qwerty đằng sau chuỗi ban đầu
Nonce không hợp lệ
Nonce không hợp lệ

Các hàm làm việc với Nonce trong WordPress

Trong WordPress, có nhiều hàm chuyên dụng để tạo, thêm, xác thực và quản lý nonce cho các thao tác bảo mật. Dưới đây là tổng hợp các hàm quan trọng thường dùng với nonce:

  • wp_create_nonce($action): Hàm này dùng để tạo ra một chuỗi nonce dựa trên hành động xác định bởi tham số $action. Nonce này có tính duy nhất và chỉ hợp lệ trong khoảng thời gian giới hạn. Ví dụ:
$nonce = wp_create_nonce('delete_post_' . $post->ID);
  • wp_nonce_field($action, $name, $referer, $echo): Hàm này chèn trường hidden nonce vào biểu mẫu để gửi kèm nonce về server khi người dùng thực hiện thao tác. Tham số $action dùng để xác định hành động, $name tuỳ chỉnh tên trường, $referer để thêm trường URL referer và $echo xác định liệu hàm trả về hay in ra HTML. Ví dụ:
wp_nonce_field('save_data_action', 'custom_nonce_field');
  • wp_nonce_url($url, $action, $name): Hàm này dùng để thêm nonce vào truy vấn của một URL, bảo vệ các link thực hiện thao tác nhạy cảm như xóa, sửa, cập nhật. Ví dụ:
$nonce_url = wp_nonce_url($url, 'delete_post_' . $post->ID, '_wpnonce');
  • check_admin_referer($action, $name): Dùng để xác thực nonce gửi từ URL hoặc form trong admin screen. Nếu xác thực thất bại, hàm sẽ từ chối yêu cầu và ngăn tiếp tục xử lý, bảo vệ tác vụ khỏi bị truy cập trái phép. Ví dụ:
check_admin_referer('delete_post_' . $post->ID, 'custom_nonce_field');
  • check_ajax_referer($action, $query_arg, $die): Sử dụng trong các request AJAX, hàm này kiểm tra tính hợp lệ của nonce gửi qua request. Nếu nonce không đúng, có thể chọn dừng xử lý bằng tham số $die. Ví dụ:
check_ajax_referer('process_action', '_ajax_nonce');
  • wp_verify_nonce($nonce, $action): Đây là hàm xác thực nonce trong trường hợp kiểm tra custom hoặc trên front-end. Nếu nonce hợp lệ sẽ trả về true, nếu không hợp lệ sẽ trả về false và nên dừng xử lý. Ví dụ:
if (!wp_verify_nonce($_POST['custom_nonce_field'], 'save_data_action')) {
    wp_die('Thao tác không hợp lệ');
}

Việc sử dụng đúng các hàm tạo và kiểm tra nonce giúp bạn bảo vệ website khỏi các rủi ro bảo mật, hạn chế thao tác trái phép, đồng thời tăng tính xác thực cho các hành động trên WordPress.

Một số lưu ý khi sử dụng Nonce

Khi sử dụng Nonce trong WordPress, bạn cần chú ý một số điểm quan trọng để đảm bảo tính bảo mật và hiệu quả triển khai:

  • Thời gian tồn tại của Nonce: Nonce được thiết kế để chỉ hợp lệ trong một khoảng thời gian nhất định (thông thường mặc định là 24 giờ). Sau thời gian này, nonce sẽ hết hiệu lực và các yêu cầu sử dụng nonce cũ sẽ không được chấp nhận. Do đó, đối với các tác vụ quan trọng hoặc thiết kế form lâu đời, bạn cần cân nhắc cơ chế làm mới nonce khi cần thiết để không làm gián đoạn trải nghiệm người dùng.
  • Không sử dụng Nonce để xác thực người dùng: Nonce chỉ có nhiệm vụ xác minh tính hợp lệ của một hành động hoặc yêu cầu chứ không được dùng thay cho cơ chế xác thực đăng nhập, phân quyền hay kiểm tra bảo mật tài khoản.
  • Lưu ý với người dùng khách (không đăng nhập): Đối với người dùng chưa đăng nhập, WordPress sẽ sinh nonce dựa trên user ID là 0, dẫn đến cùng một giá trị nonce cho tất cả khách truy cập. Điều này có thể không đủ an toàn đối với một số thao tác nhạy cảm. Để tăng cường bảo vệ, bạn nên xây dựng thêm cơ chế session riêng hoặc dùng hook nonce_user_logged_out để gán ID tạm cho từng phiên người dùng.
  • Ảnh hưởng bởi bộ nhớ đệm trang (page cache): Nonce thường dành cho các thao tác động nên nếu trang được cache mạnh sẽ dẫn đến người dùng nhận cùng một nonce hoặc nonce hết hạn sử dụng. Bạn cần cấu hình hệ thống cache loại trừ các trang/bố cục có sử dụng nonce hoặc đảm bảo quá trình tạo và xác minh nonce vẫn hợp lệ dù có cache.
  • Đảm bảo tính cụ thể của action khi tạo nonce: Khi sử dụng hàm tạo nonce hoặc các hàm liên quan, nên đặt action (chuỗi mô tả thao tác) thật cụ thể để hạn chế trùng lặp và nâng cao khả năng xác thực.
  • Không hiển thị nonce cho bên ngoài khi không cần thiết: Chỉ nhúng nonce vào những vị trí thực sự cần xác thực và không để lộ value nonce trên các trang công cộng, mã nguồn mở hoặc qua kênh không an toàn.
Một số lưu ý khi sử dụng Nonce
Một số lưu ý khi sử dụng Nonce

Vietnix – Nền tảng Hosting tối ưu cho website WordPress bảo mật

Để các cơ chế bảo mật như WordPress Nonce hoạt động hiệu quả, một nền tảng hosting chuyên nghiệp, được tối ưu hóa cho WordPress là điều cần thiết. Vietnix cung cấp dịch vụ web hosting uy tín, mang lại hiệu suất vượt trội và bảo mật cao nhất, đảm bảo các tính năng bảo mật của website luôn hoạt động ổn định.

Ngoài ra, bạn có thể tham khảo gói Max Speed Hosting của Vietnix sẽ giúp tăng tốc độ tải trang, nâng cao trải nghiệm người dùng và góp phần bảo vệ website một cách toàn diện. Hãy để Vietnix cung cấp hạ tầng vững chắc, giúp bạn xây dựng một website WordPress an toàn, nhanh chóng và đáng tin cậy. Liên hệ ngay!

Thông tin liên hệ:

  • Website: https://vietnix.vn/
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh

Câu hỏi thường gặp

WordPress Nonce expiration là gì?

WordPress Nonce expiration là thời gian hết hạn của một mã nonce được tạo ra trong WordPress. Thông thường, một nonce chỉ có hiệu lực trong vòng 12 đến 24 giờ, sau khoảng thời gian này, nonce sẽ không còn hợp lệ và các thao tác yêu cầu xác thực bằng nonce đó sẽ bị từ chối để đảm bảo an toàn bảo mật.

Cách xác thực (verify) một WordPress Nonce?

Sử dụng hàm wp_verify_nonce($nonce_value, 'my-action'). Hàm này sẽ trả về false nếu nonce không hợp lệ. Nếu hợp lệ, nó sẽ trả về 1 (nếu nonce được tạo trong 12 giờ qua) hoặc 2 (nếu được tạo trong khoảng 12-24 giờ qua). Đối với các yêu cầu trong khu vực quản trị, hàm check_admin_referer('my-action') là một lựa chọn phổ biến vì nó tự động kiểm tra và xử lý lỗi.

WordPress AJAX Nonce được sử dụng như thế nào?

WordPress AJAX Nonce là một mã nonce đặc biệt được sử dụng để bảo vệ các yêu cầu AJAX trong WordPress. Khi thực hiện một hành động qua AJAX, bạn nên tạo một nonce, truyền nó cùng request và kiểm tra lại mã này trên server bằng các hàm xác minh, nhằm ngăn chặn các cuộc tấn công giả mạo yêu cầu.

Nonce in API dùng để làm gì?

Nonce in API được sử dụng để xác thực và bảo vệ các endpoint của API trong WordPress. Bằng cách yêu cầu và kiểm tra nonce trong mỗi request tới API, bạn có thể hạn chế các truy cập không hợp lệ hoặc các cuộc tấn công CSRF vào hệ thống.

Làm thế nào để sử dụng Nonce in URL trong WordPress?

Nonce in URL là việc chèn mã nonce vào tham số của đường dẫn URL, thường ứng dụng trong các đường link thực hiện thao tác quan trọng như xóa, sửa, xác nhận, v.v. Khi nhận được request, WordPress sẽ kiểm tra nonce trong URL để xác thực thao tác là hợp lệ trước khi xử lý.

Nonce verification có ý nghĩa gì trong bảo mật WordPress?

Nonce verification là quá trình kiểm tra và xác nhận tính hợp lệ của mã nonce khi nhận được một yêu cầu thực hiện thao tác nhạy cảm. Quá trình này đảm bảo rằng hành động chỉ được xử lý khi nonce hợp lệ, qua đó giúp bảo vệ website WordPress khỏi các nguy cơ bị tấn công CSRF hoặc thao tác trái phép.

WordPress Nonce là một cơ chế bảo mật đơn giản nhưng cực kỳ hiệu quả, đóng vai trò then chốt trong việc bảo vệ các thao tác nhạy cảm trên website WordPress khỏi các cuộc tấn công như CSRF. Việc hiểu rõ cách tạo, triển khai và xác minh Nonce, cùng với việc tuân thủ các lưu ý quan trọng, sẽ giúp các nhà phát triển và quản trị viên xây dựng những plugin, theme và website WordPress an toàn, đáng tin cậy và chuyên nghiệp.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận
icon popup single post

CẢM ƠN BẠN ĐÃ ĐÁNH GIÁ BÀI VIẾT

Vietnix sẽ luôn cố gắng cải thiện chất lượng dịch vụ mỗi ngày

ĐÓNG

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG