• Trang chủ
  • WordPress
    • Thủ thuật WordPress
    • WordPress Plugins
    • WordPress Themes
  • Hosting và Domain
  • Kiếm tiền online
  • Đánh giá
  • Khuyến mãi
  • Thông báo
wpcb-logo

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. :)

Đang tải đánh giá...
  • Facebook
  • Twitter (X)
  • LinkedIn
  • Pinterest
  • Tumblr
  • Zalo

Bài viết liên quan

Plugin bảo mật WPCB Secure Shield độc quyền
Plugin bảo mật WPCB Secure Shield độc quyền
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

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

Người sáng lập

avatar-tac-gia
Blogger - Developer - Freelancer

Tôi tên là Bùi Trung Hiếu, sinh ra ở một làng quê nghèo thuộc tỉnh Nghệ An. Hiện tại, tôi đang sinh sống và làm việc tại Hà Nội. Với niềm đam mê công nghệ thông tin mãnh liệt, đặc biệt là WordPress, tôi đã tự tìm tòi, nghiên cứu về chúng trong suốt nhiều năm qua.

Xem thêm về tôi

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

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

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

Plugin độc quyền miễn phí

  • WPCB Central Panel
  • WPCB Secure Shield
  • WPCB Hybrid Cache Manager
  • WPCB AI Optimization
  • WPCB Simple Ratings
  • WPCB Simple AntiSpam
  • WPCB Social Share Buttons
  • WPCB Comment Notifications
  • WPCB Comment User Badge
  • WPCB Top Commenters
  • WPCB Simple SMTP
  • WPCB Simple Contact Form
  • WPCB Permalinks Manager
  • WPCB Syntax Highlighter
  • WPCB Content Protector
  • WPCB Auto Images Alt-Text
  • WPCB Snowfall
  • WPCB Ultimate Search
  • WPCB 404 Auto Redirect
  • WPCB Disable Blog
  • WPCB Simple Lightbox
  • WPCB Auto Expired Transients Cleaner

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

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

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

  • Ra mắt plugin WPCB Central Panel độc quyền 08/04/2026
  • Tối ưu website WordPress cho AI một cách đơn giản 24/03/2026
  • Hướng dẫn nâng cấp PHP 8.5 cho website WordPress 09/03/2026
  • Sửa lỗi trắng trang cho XML Sitemaps của Rank Math SEO 02/03/2026
  • Sửa lỗi 404 cho XML Sitemaps của Rank Math SEO 01/02/2026
  • Plugin chống spam siêu nhẹ dành cho WordPress 07/01/2026

Footer

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

  • Trung Hiếu trong Ra mắt plugin WPCB Central Panel độc quyền
  • Tịnh Nguyễn trong Ra mắt plugin WPCB Central Panel độc quyền
  • Trung Hiếu trong Ra mắt plugin WPCB Central Panel độc quyền
  • Tịnh Nguyễn Blog trong Ra mắt plugin WPCB Central Panel độc quyền
  • Trung Hiếu trong Plugin chống spam siêu nhẹ dành cho WordPress

Bình luận nhiều nhất

  1. Tịnh Nguyễn (15)
  2. Ngọc Blue (6)
  3. HN (1)
  4. Blog Công Chứng (1)
  5. Tuấn Digi (1)

Liên kết hữu ích

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

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

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

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