• Trang chủ
  • WordPress
    • Thủ thuật WordPress
    • WordPress Plugins
    • WordPress Themes
  • Hosting và Domain
  • Kiếm tiền
  • Đánh giá
  • Khuyến mãi
  • Thông báo
  • Giới thiệu
  • Liên hệ

WP Căn bản

Kiến thức căn bản cho người dùng WordPress

paradise-child-theme-wordpress-theme-tot-nhat
  • Dịch vụ WordPress Hosting
  • Dịch vụ tối ưu WordPress
  • Dịch vụ quét mã độc WordPress
  • Mua Paradise child theme
Trang chủ » WordPress » Thủ thuật WordPress » Sử dụng Nonces để tăng cường bảo mật cho WordPress
hosting-tot-nhat-danh-cho-wordpress

Sử dụng Nonces để tăng cường bảo mật cho WordPress

Cập nhật: 19/06/2022 Trung Hiếu 4 Bình luận

Sử dụng Nonces để tăng cường bảo mật cho WordPress.

su-dung-nonces-de-tang-cuong-bao-mat-cho-wordpress

Nonces là một trong những cách tốt nhất để bảo vệ người dùng khỏi các mối đe dọa có thể xảy ra. Chúng được sử dụng để bảo đảm hoạt động người dùng được khởi xướng bởi các plugin, chẳng hạn như việc tạo một biểu mẫu (form), xóa bài viết hoặc bất cứ điều gì khác mà có thể làm phơi bày các cơ sở dữ liệu. Trong bài viết này, tôi sẽ mô tả cho các bạn những vấn đề liên quan đến nonces và cách mà bạn có thể sử dụng chúng để làm cho blog/website của mình trở nên an toàn hơn.

Tham khảo thêm:

  • Giới thiệu serie videos bảo mật WordPress từ WPMUDEV
  • Bảo mật blog WordPress của bạn với 5 bước đơn giản
  • Bảo mật WordPress bằng file .htaccess

Tại sao chúng ta cần Nonces?

Hãy tưởng tượng bạn đang viết một plugin cho phép người dùng xóa một bài viết từ front-end. Hiểu một cách đơn giản, cơ chế để xóa một bài viết là chuyển nó đến một liên kết có dạng http://mysite.com/2015/02/12/my-article/?delete=true. Nói cách khác, liên kết đến bài viết này có một chuỗi truy vấn kèm theo.

Đoạn mã của bạn sẽ thực hiện việc kiểm tra trên trang web. Nếu người dùng là Admin, bài viết này sẽ bị xóa và người dùng sẽ được chuyển hướng trở lại trang chính. Điều này có vẻ rất an toàn phải không? Đáng buồn thay, nó là không đủ. Có hai điều bạn cần phải kiểm tra trước khi mỗi hành động được thực hiện: cho phép và ý định. Bạn đã kiểm tra và xác nhận người dùng được phép làm điều đó, nhưng bạn không thể chắc chắn rằng người dùng có thực sự muốn xóa bài viết hay không?

Hãy tưởng tượng, tôi gửi cho bạn một email nói rằng tôi tìm thấy lỗi đánh máy trong một số bài viết của bạn và tôi đã liên kết nó trong nội dung email. Nếu tôi tạo ra một liên kết trong một email, bạn sẽ không thấy mục tiêu thật sự mà liên kết đó hướng tới (nếu không để ý), chỉ thấy phần văn bản có thể click vào. Vì vậy, nếu tôi gắn thêm vào đó một truy vấn có dạng ?delete=true, bạn sẽ vô tình hoàn tất việc xóa một bài viết, mặc dù bạn không muốn làm điều đó.

Đây chính là lúc bạn cần đến nonces. Một nonce là một mã số đặc biệt, được tạo ra ở nguồn của hành động. Khi sử dụng nonces, liên kết có thể có dạng như thế này: http://mysite.com/2015/02/12/my-article/?delete=true&_wpnonce=234283223. Các nonce sẽ luôn luôn khác nhau và tôi sẽ không thể để gửi cho bạn một liên kết đơn giản giống như bên trên, bởi vì quá trình xóa sẽ không diễn ra nếu không có nonce đúng.

Vậy Nonces là gì?

Nonce là từ viết tắt của “number used once” (số được sử dụng một lần). Nonces được sử dụng trong bảo mật dữ liệu bằng cách đính kèm mã số sử dụng một lần vào bên cạnh chúng.

WordPress thực hiện nonces có một chút khác biệt. Bởi vì chúng không phải là những con số và được sử dụng không chỉ một lần, nhưng mục đích và cách sử dụng thì cũng tương tự như vậy. WordPress sử dụng một hash và nonces đôi khi có thể được sử dụng nhiều hơn một lần, nhưng chúng có thời gian hết hạn rất ngắn.

Sử dụng WordPress Nonces như thế nào?

Quá trình này là một công việc gồm hai bước khá đơn giản: bạn tạo một nonce ở nguồn gốc của một hành động (đặt nó vào một liên kết hoặc như là một lĩnh vực ẩn trong một biểu mẫu) và xác nhận nó vào mục tiêu. Bạn sẽ chỉ cần biết một vài chức năng ở đây:

1. Thêm Nonces và Forms:

Để thêm một nonce vào biểu mẫu, bạn sẽ cần phải thêm một lĩnh vực (field) ẩn (gồm một tên và một giá trị). WordPress của bạn sẽ được bảo vệ với chức năng wp_nonce_field ().

Trong hình thức đơn giản nhất, bạn có thể sử dụng nó chỉ với một tham số:

wp_nonce_field( 'delete-post-' . get_the_ID() );

Nó sẽ tạo ra hai trường (hay lĩnh vực) cho bạn, một cho các nonce và một cho referrer:

<input type="hidden" id="_wpnonce" name="_wpnonce" value="37b392c8a0" />
<input type="hidden" name="_wp_http_referer" value="/2015/02/13/my-article/" />

Chức năng này cho phép bạn tinh chỉnh 4 tham số. Tham số đầu tiên xác định các hành động được thực hiện với các nonces. Nó không hiển thị trong trường này, thay vào đó được chứa trong hash. Tham số thứ hai có thể đổi tên, nó là _wpnonce theo mặc định. Tham số thứ ba là một giá trị boolean kiểm soát việc có kiểm tra referrer hay không (giữ nguyên theo mặc định). Cuối cùng, thứ tư là một boolean quyết định các trường có được lặp lại hay không? – nó được giữ nguyên theo mặc định.

Một nguyên tắc quan trọng mà bạn cần phải chú ý: luôn luôn làm cho tên hành động (các tham số đầu tiên) càng cụ thể càng tốt. Đừng chỉ đặt tên cho nó là “delete-post“, hãy sửa thành “delete-post-[post_ID]“.

Ở đầu bên kia của hành động, bạn sẽ cần phải xác minh các nonce. Đây là nơi tham số hành động của form được tạo ra cho bạn. Để xác minh các nonce, hãy sử dụng đoạn mã đơn giản này:

if ( ! isset( $_POST['field_name'] ) || ! wp_verify_nonce( $_POST['field_name'], 'action_name' )
) {
// Do something if the nonce does not verify
exit();
}
// Process your form

2. Thêm Nonces vào URL

Đôi khi bạn muốn bắt đầu một hành động thông qua một liên kết, đặc biệt là ở khu vực Admin. Kể từ khi các liên kết cơ bản hoạt động thông qua các thông số truy vấn, bạn có thể dễ dàng chèn nonce vào các liên kết.

Bạn có thể sử dụng wp_nonce_url () để thực hiện việc này. Dưới đây là cách làm:

$delete_link = wp_get_shortlink( get_the_ID() ) . '&delete=true';
$nonced_link = wp_nonce_url( $delete_link, 'delete-post-' . get_the_ID(), '_mynonce' );

Kết quả cuối cùng sẽ là một URL có dạng như: http://mysite.com?p=553&_mynonce=7278c82a8f3. Bạn có thể thấy điều này tương tự như những gì chúng ta đã làm với các biểu mẫu (form), sự khác biệt duy nhất là các nonce được chuyển vào trong URL như các tham số GET.

Bạn có thể xác minh các nonce bằng cách sử dụng các phương pháp tương tự như trước. Lần này chúng ta sẽ thêm tên hành động thích hợp với các ID và sử dụng biến GET.

if ( ! isset( $_GET['_mynonce'] ) || ! wp_verify_nonce( $_GET['_mynonce'], 'delete-post-' . $_GET['p'] )
) {
// Do something if the nonce does not verify
exit();
}
// Process your form

Tổng quan

Nonces thực sự nên được sử dụng bất cứ lúc nào bạn muốn bắt đầu một hành động người dùng nếu không blog/website của bạn sẽ dễ bị tổn thương bởi các cuộc tấn công, đặc biệt là CSRF (Cross Site Request Forgery). Đừng quên rằng nonces chỉ kiểm tra ý định và bạn sẽ cần phải chắc chắn rằng người dùng có quyền thực hiện hành động đó.

Để hiểu rõ hơn, các bạn có thể tham khảo thêm về Nonces tại đây.

Nếu bạn thích bài viết này, hãy subscribe blog của tôi để thường xuyên cập nhật những bài viết hay nhất, mới nhất qua email nhé. Cảm ơn rất nhiều. :)

  • Chia sẻ lên Facebook
  • Chia sẻ lên Twitter
  • Chia sẻ lên LinkedIn

Bài viết liên quan

Monarx Security được tích hợp vào dịch vụ WordPress Hosting
Monarx Security được tích hợp vào dịch vụ WordPress Hosting
Plugin chống copy nội dung siêu nhẹ cho WordPress
Plugin chống copy nội dung siêu nhẹ cho WordPress
Chống spam cho plugin Contact Form 7
Chống spam cho plugin Contact Form 7

Chuyên mục: Thủ thuật WordPress Thẻ: Bảo mật WordPress

wpcanban-com-facebook-group

Nói về Trung Hiếu

Một người con của xứ Nghệ, hiện đang sinh sống tại Hà Nội. Tôi là người sáng lập và đứng sau mọi hoạt động của WP Căn bản. Tìm hiểu thêm về tôi tại đây.

Bài viết trước « Sắp xếp lại WordPress Admin Menu với Admin Menu Manager
Bài viết sau Tại sao bạn nên mua domain tại NameCheap? »

Reader Interactions

Bình luận

    Để lại một bình luận Hủy

    Tất cả các bình luận đều sẽ được kiểm duyệt nghiêm ngặt. Mọi bình luận trái quy định sử dụng sẽ bị gỡ bỏ link hoặc xóa bỏ hoàn toàn. Vui lòng đọc kỹ quy định trước khi bình luận. Xin cảm ơn!

  1. Tùng 24 bình luậnviết

    24/11/2023 lúc 08:42

    Mình bình luận trên Ngọc đến rồi và nhận được thông báo Nonce không hợp lệ

    Bình luận
    • Trung Hiếu Quản lýviết

      24/11/2023 lúc 09:28

      Chắc website bên đó bị lỗi cache hay gì rồi. 😅

      Bình luận
  2. Nhan Han 1 bình luậnviết

    29/09/2021 lúc 20:49

    Cảm ơn ad, mình đang sử dụng tại gudiebo.com hiện tại tính bảo mật rất ổn, chạy 3 năm chưa thấy bị hack lúc nào cả.

    Bình luận
  3. Share301 1 bình luậnviết

    27/05/2021 lúc 15:15

    Cảm ơn bài viết hữu ích của bạn. Truy cập https://thuyduong.info để có thêm nhiều kiến thức về tài chính nhé!

    Bình luận

Sidebar chính

NHẬN BÀI VIẾT QUA EMAIL

Hãy đăng ký ngay để là người đầu tiên nhận được thông báo qua email mỗi khi chúng tôi có bài viết mới. Tặng miễn phí ebook "Bảo mật WordPress toàn tập" do WP Căn bản biên soạn!

Theo dõi qua mạng xã hội

Dịch vụ WordPress Hosting

dich-vu-wordpress-hosting-chat-luong-cao

Bạn đang tìm gì?

WordPress căn bản

Bảo mật WordPress

Tăng tốc WordPress

Thủ thuật CloudFlare

Sửa lỗi WordPress

Thủ thuật LiteSpeed

Thủ thuật Genesis

Thủ thuật SEO

Thủ thuật WooCommerce

Sử dụng theme Paradise

Dịch vụ tối ưu WordPress miễn phí

dich-vu-toi-uu-wordpress-mien-phi

Dịch vụ quét mã độc miễn phí

dich-vu-quet-ma-doc-wordpress-mien-phi

Footer

Bài viết mới nhất

  • Monarx Security được tích hợp vào dịch vụ WordPress Hosting 15/06/2025
  • Hiển thị code trong bài viết của WordPress 07/06/2025
  • Plugin SMTP siêu nhẹ dành cho WordPress 26/05/2025
  • Plugin contact form siêu nhẹ cho WordPress 23/05/2025

Bình luận mới nhất

  • Trung Hiếu trong Monarx Security được tích hợp vào dịch vụ WordPress Hosting
  • TITAN VINA trong Monarx Security được tích hợp vào dịch vụ WordPress Hosting
  • Trung Hiếu trong Monarx Security được tích hợp vào dịch vụ WordPress Hosting
  • TITAN VINA trong Monarx Security được tích hợp vào dịch vụ WordPress Hosting

Thông tin hữu ích

  • Giới thiệu bản thân
  • Quy định sử dụng
  • Chính sách bảo mật
  • Bản quyền nội dung

Thống kê WP Căn bản

9 Chuyên mục - 1.005 Bài viết - 35.545 Bình luận

Bản quyền © 2014 - 2025 · WP Căn bản (tiền thân là eBooksvn.com) · Sử dụng Paradise child theme và dịch vụ WordPress Hosting