WordPress.Security.NonceVerification.Missing
Missing nonce verification
A request handler uses request data without verifying that the request was intentionally created by WordPress.
Why It Shows Up
The scan found `$_GET`, `$_POST`, or similar request data in a context where a nonce check is expected but missing.
Why It Matters
Without nonce verification, an attacker may be able to trick a logged-in user into submitting an unwanted state-changing request.
How to Fix
- Add a nonce to the form, link, AJAX request, or REST request.
- Verify it with `check_admin_referer()`, `check_ajax_referer()`, or `wp_verify_nonce()` before changing state.
- Keep capability checks separate; nonces prove intent, not permission.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #3101 | Updater by BestWebSoft | 46 | 494 | 219 | 2k+ | Text Domain Mismatch | ||
| #3102 | Custom Price Labels for WooCommerce | 46 | 17 | 22 | 1k+ | Output is not escaped | ||
| #3103 | WPB Category Slider for WooCommerce – Responsive Product Category Carousel & Enhanced UX | 46 | 101 | 16 | 700 | Non Singular String Literal Domain | ||
| #3104 | AffiliateWP Checkout Referrals | 47 | 48 | 26 | 600 | Output is not escaped | ||
| #3105 | Verified Member for BuddyPress | 47 | 20 | 38 | 3k+ | Nonce verification recommended | ||
| #3106 | 404 Image Redirection (Replace Broken Images) | 47 | 118 | 85 | 600 | Text Domain Mismatch | ||
| #3107 | Clear Cache for Me | 47 | 58 | 8 | 40k+ | Text Domain Mismatch | ||
| #3108 | Better Badge – Custom Product Badges for WooCommerce | 47 | 22 | 47 | 500 | Non Singular String Literal Domain | ||
| #3109 | Customizer Export/Import | 47 | 14 | 15 | 100k+ | Unsafe printing function | ||
| #3110 | Delete Duplicate Posts | 47 | 9 | 50 | 10k+ | Direct Query | ||
| #3111 | Show IDs by Echo | 47 | 21 | 13 | 2k+ | Output is not escaped | ||
| #3112 | Extended CRM for Users Insights | 47 | 11 | 23 | 400 | Missing nonce verification | ||
| #3113 | Flying Pages: Preload Pages for Faster Navigation & Improved User Experience | 47 | 21 | 21 | 20k+ | Missing direct file access protection | ||
| #3114 | G Meta Keywords | 47 | 31 | 8 | 10k+ | Unsafe printing function | ||
| #3115 | Gateway AqayePardakht for Woocommerce | 47 | 72 | 23 | 4k+ | Text Domain Mismatch | ||
| #3116 | Groups 404 Redirect | 47 | 35 | 33 | 1k+ | Non Singular String Literal Domain | ||
| #3117 | Product Categories/Tags Bottom Description for WooCommerce | 47 | 60 | 23 | 3k+ | Text Domain Mismatch | ||
| #3118 | Restore PayPal Standard for WooCommerce | 47 | 19 | 53 | 3k+ | Nonce verification recommended | ||
| #3119 | Security Ninja For MainWP | 47 | 246 | 71 | 500 | Text Domain Mismatch | ||
| #3120 | SportsPress for Baseball | 47 | 113 | 34 | 900 | Text Domain Mismatch | ||
| #3121 | Tabby Checkout | 47 | 33 | 46 | 4k+ | Non-prefixed class | ||
| #3122 | The Tribal Plugin | 47 | 43 | 62 | 700 | Non-prefixed function | ||
| #3123 | Userback | 47 | 13 | 20 | 2k+ | Output is not escaped | ||
| #3124 | Better Usability for WooCommerce | 47 | 29 | 91 | 800 | Non-prefixed hook name | ||
| #3125 | iControlWP | 47 | 45 | 59 | 1k+ | Missing direct file access protection | ||
| #3126 | WP Custom Author URL | 47 | 16 | 38 | 5k+ | Non-prefixed global variable | ||
| #3127 | 3CX Free Live Chat, Calls & Messaging | 47 | 24 | 16 | 100k+ | Output is not escaped | ||
| #3128 | WP PHP Console | 47 | 18 | 24 | 500 | Output is not escaped | ||
| #3129 | Compress, Resize & Lazy Load Images – WPvivid Image Optimization | 47 | 107 | 58 | 10k+ | Missing direct file access protection | ||
| #3130 | Add-on WooCommerce – MailPoet 3 | 48 | 30 | 21 | 600 | Output is not escaped | ||
| #3131 | Add Polylang support for Customizer | 48 | 18 | 20 | 2k+ | Nonce verification recommended | ||
| #3132 | Ansar Import – One Click Starter Sites – for Elementor & Themes | 48 | 27 | 116 | 10k+ | Non-prefixed global variable | ||
| #3133 | AnWP Post Grid and Post Carousel Slider for Elementor | 48 | 758 | 171 | 20k+ | Text Domain Mismatch | ||
| #3134 | Comment Notifier | 48 | 10 | 55 | 400 | Non-prefixed global variable | ||
| #3135 | Convertful – Your Ultimate On-Site Conversion Tool | 48 | 15 | 34 | 3k+ | wp function not compatible with requires wp | ||
| #3136 | Custom Related Products for WooCommerce | 48 | 25 | 10 | 5k+ | Text Domain Mismatch | ||
| #3137 | Maps Plugin using Google Maps for WordPress – WP Google Map | 48 | 289 | 38 | 10k+ | wp function not compatible with requires wp | ||
| #3138 | Hotline Phone Ring | 48 | 16 | 15 | 8k+ | Output is not escaped | ||
| #3139 | Library Bookshelves | 48 | 12 | 59 | 500 | Nonce verification recommended | ||
| #3140 | Mailster Live | 48 | 22 | 37 | 600 | Missing Translators Comment | ||
| #3141 | External Links | 48 | 42 | 13 | 9k+ | Output is not escaped | ||
| #3142 | Virtuaria PagBank / PagSeguro for WooCommerce | 48 | 12 | 160 | 1k+ | Non-prefixed global variable | ||
| #3143 | Flutterwave Payment Gateway for WooCommerce | 48 | 14 | 22 | 2k+ | Output is not escaped | ||
| #3144 | Analytics by BestWebSoft – Google Analytics Dashboard and Statistic Plugin for WordPress | 49 | 478 | 176 | 1k+ | Text Domain Mismatch | ||
| #3145 | Category Posts in Custom Menu | 49 | 19 | 18 | 2k+ | Output is not escaped | ||
| #3146 | CryptAPI Payment Gateway for WooCommerce | 49 | 185 | 23 | 400 | Text Domain Mismatch | ||
| #3147 | Download Media Library | 49 | 22 | 40 | 1k+ | Text Domain Mismatch | ||
| #3148 | Drag and Drop Multiple File Upload for WooCommerce | 49 | 114 | 29 | 5k+ | Text Domain Mismatch | ||
| #3149 | GDPR Tools: comment ip removement | 49 | 18 | 13 | 2k+ | Unsafe printing function | ||
| #3150 | Easy Property Listings | 49 | 60 | 66 | 5k+ | wp function not compatible with requires wp |