WP Nonce được giới thiệu lần đầu tiên trong phiên bản WordPress 2.0.3.
Nhờ có WP Nonce trở thành một công cụ mạnh mẽ giúp bạn xây dựng các trang web WordPress an toàn hơn.
WP Nonce (viết tắt của “number used once” ) là một mã thông báo bảo mật độc nhất mà WordPress tạo ra để bảo vệ các URL, Forms và lệnh gọi AJAX khỏi các hành vi tấn công, đặc biệt là loại tấn công Cross-Site Request Forgery – CSRF.
Khi có wp nonce WordPress sẽ kiểm tra đoạn code này để đảm bảo yêu cầu là hợp lệ và xuất phát từ chính chủ trang web của bạn.
Về cơ bản, nonce hoạt động như một “câu hỏi bí mật” mà trang web của bạn tự động thêm vào các liên kết và form biểu mẫu, AJAX. Khi một hành động được thực hiện (ví dụ: gửi form, xóa bài đăng, một nút thực thi hành động, public bài viết…), WordPress sẽ kiểm tra xem câu trả lời (nonce) có hợp lệ hay không. Nếu không, yêu cầu sẽ bị từ chối. Điều này đảm bảo rằng yêu cầu được thực hiện bởi người dùng hiện tại, từ trang web của bạn, chứ không phải từ một trang web bên thứ ba nào đó.
WP Nonce: Là một code bảo mật duy nhất và tạm thời và chỉ sử dụng 1 lần không tái sử dụng được. Nó được tạo ra riêng cho từng người dùng trong một phiên làm việc cụ thể và sẽ hết hạn sau một khoảng thời gian ngắn (thường là dưới 12 tiếng).
Có thể bạn đang sử dụng công nghệ này cũng không hay biết, sự tồn tại của nó. Các plugin, theme chất lượng cao bạn sử dụng đều tối ưu hóa wp nonce này rất tốt, còn ngược lại themes, plugins kém chất lượng thì không để ý vấn đề này.

Lợi ích chính của việc sử dụng WP Nonces
- Bảo vệ chống lại tấn công CSRF: Đây là lợi ích quan trọng nhất. Tấn công CSRF lừa người dùng đã đăng nhập thực hiện các hành động không mong muốn trên một trang web mà họ tin cậy. Nonce ngăn chặn điều này bằng cách xác minh ý định của người dùng.
- Tăng cường bảo mật cho plugin và theme: Bằng cách triển khai nonce, các nhà phát triển có thể đảm bảo rằng các hành động nhạy cảm trong plugin và theme của họ (như thay đổi cài đặt, xóa dữ liệu) được bảo vệ.
- Xác thực nguồn gốc yêu cầu: Nonce giúp xác nhận rằng một yêu cầu đến từ giao diện quản trị hoặc các biểu mẫu trên trang web của bạn, chứ không phải từ một nguồn bên ngoài.
- Ngăn chặn việc gửi lại forms ngẫu nhiên: Nonce giúp tránh các hành động trùng lặp do người dùng vô tình nhấp vào nút gửi nhiều lần.
Hướng dẫn triển khai WP Nonces
Phần này, nó hơi có code chuyên môn nên anh em phải biết một chút về lập trình WordPress thì mới có thể hiểu được.
Việc triển khai nonces trong WordPress có thể được thực hiện theo ba cách chính: thêm vào biểu mẫu (forms), thêm vào URL, và sử dụng với AJAX.
- Forms (Biểu mẫu)
- AJAX
- URL
Mình sẽ thị phạm về: forms
Ví dụ không có wp_nonce với form thì sẽ như thế này.
<form method="post"> <input type="submit" value="Submit"> </form> <?php //Tiến hành xử lý dữ liệu ?>
Ví dụ đây là đoạn đã có triển khai wp nonce
chỉ cần 2 hàm quan trọng là (wp_nonce_field
và wp_verify_nonce
)
<form method="post"> <?php wp_nonce_field( 'ten_hanh_dong_cua_ban', 'ten_truong_nonce' ); ?> <input type="submit" value="Submit"> </form> <?php if ( isset( $_POST['ten_truong_nonce'] ) && wp_verify_nonce( $_POST['ten_truong_nonce'], 'ten_hanh_dong_cua_ban' ) ) { // Nonce hợp lệ! Tiến hành xử lý dữ liệu... } else { // Nonce không hợp lệ hoặc không tồn tại. Dừng xử lý. wp_die( 'Hành động không được phép!' ); } ?>
Mình sẽ thị phạm về URL với wp nonce.
về cơ bản anh em sử dụng WordPress cũng ít xài tính năng này, nhất so với form và ajax, nhưng mình vẫn chia sẻ thị phạm.
Khi URL không có wp nonce:
<?php $url = 'https://wptangtoc.com/wp-admin/admin.php?page=wptangtocn&action=hanh_dong&item_id=1998'; echo '<a href="' . esc_url( $url ) . '">Thực thi hành động</a>'; ?>
Khi URL có wp nonce
<?php $url = 'https://wptangtoc.com/wp-admin/admin.php?page=wptangtocn&action=hanh_dong&item_id=1998'; $nonce_url = wp_nonce_url( $url, 'thuc_thi_hanh_dong', '_wpnonce' ); echo '<a href="' . esc_url( $nonce_url ) . '">Thực thi hành động</a>'; ?>
Còn AJAX thì rất nâng cao rất dài nếu muốn nói thì có thể nói thành một bài viết riêng biệt, nếu nhiều anh em yêu cầu mình sẽ thị phạm ở bài sau.
Kết luận: WP NONCE là một công nghệ rất hữu ích để bảo vệ website của bạn.
Bạn chỉ cần lưu ý rằng: Page cache HTML và WP Nonce về cơ bản là không tương thích với nhau nếu không có cấu hình đặc biệt.
Thường WP NONCE rất tốt cho những người dùng đã đăng nhập.
WP Nonce: Là một mã bảo mật duy nhất và tạm thời. Nó được tạo ra riêng cho từng người dùng trong một phiên làm việc cụ thể và sẽ hết hạn sau một khoảng thời gian ngắn (thường là dưới 12 giờ).
WP Nonces quan trọng bậc nhất và không thể thiếu trong khi người dùng đã đăng nhập, vì đây là nơi thực hiện các hành động có mức độ nguy hiểm cao nhất. Còn WP NONCE không quá quan trọng khi không đăng nhập thì không cần thiết lắm.
Nhưng một số anh em vẫn thích dùng wp nonce dành cho người dùng không đăng nhập nhưng vẫn muốn tương thích tốt với page cache html thì có thể sử dụng giải pháp:
- ESI (Edge Side Includes – Litespeed enterprise webserver một công nghệ độc quyền giải quyết vấn đề này rất hiệu quả) – Bạn nào đang sử dụng litespeed enterprise webserver và có dùng plugin litespeed cache thì đây là lựa chọn tuyệt vời.
- Tải WP_Nonce qua AJAX Một kỹ thuật nâng cao là không đưa nonce vào HTML ban đầu. Thay vào đó, sau khi trang tĩnh được tải, một đoạn mã JavaScript sẽ chạy để gửi yêu cầu (AJAX) đến máy chủ, lấy về một nonce hợp lệ và chèn nó vào biểu mẫu một cách tự động.
- Giảm thời gian sống của PAGE Cache HTML (TTL) – Cách này làm giảm đáng kể hiệu quả của việc caching vì máy chủ phải liên tục tạo lại các bản cache mới, gây tốn tài nguyên. Đây không phải là một giải pháp được khuyến khích.
Những bài hướng dẫn tối ưu page cache html mình luôn luôn hướng dẫn mọi người vì sao mình luôn luôn tắt page cache html khi người dùng đã đăng nhập, tuyệt đối không bao giờ bật vì là cái này này wp_nonce
WP Nonces trở thành một công cụ mạnh mẽ giúp bạn xây dựng các trang web WordPress an toàn hơn. Đặc biệt quan trọng những website có phần đăng nhập cho người dùng: như đăng nhập thành viên, diễn dàn, tài khoản trang truyện lưu bookmark, thương mại điện tử có phần đăng nhập tài khoản….
Để lại một bình luận