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 |
|---|---|---|---|---|---|---|---|---|
| #2551 | Logo Showcase – Logo Slider, Carousel & Sponsors Gallery | 39 | 535 | 98 | 1k+ | Text Domain Mismatch | ||
| #2552 | Logo Showcase – Carousel, Slider, Grid & List for WordPress | 39 | 123 | 160 | 400 | Unsafe printing function | ||
| #2553 | LuckyWP Table of Contents | 39 | 438 | 62 | 100k+ | Output is not escaped | ||
| #2554 | Magazine Blocks – Blog Designer, Magazine & Newspaper Website Builder, Page Builder with Posts Blocks, Post Grid | 39 | 65 | 72 | 6k+ | block api version too low | ||
| #2555 | Mail Subscribe List | 39 | 17 | 94 | 3k+ | Input is not validated | ||
| #2556 | Manage Enrollment for LearnDash | 39 | 48 | 79 | 400 | Unsafe printing function | ||
| #2557 | Map Categories to Pages | 39 | 48 | 13 | 700 | Output is not escaped | ||
| #2558 | Kikote – Location Picker at Checkout & Google Address AutoFill Plugin for WooCommerce | 39 | 76 | 64 | 1k+ | Missing Translators Comment | ||
| #2559 | Maps for WP | 39 | 169 | 73 | 400 | Output is not escaped | ||
| #2560 | Markup by Attribute for WooCommerce | 39 | 46 | 102 | 2k+ | Direct Query | ||
| #2561 | Mascaras CF7 | 39 | 54 | 16 | 1k+ | Text Domain Mismatch | ||
| #2562 | Meks Easy Photo Feed Widget | 39 | 77 | 27 | 10k+ | Output is not escaped | ||
| #2563 | Menubar | 39 | 171 | 46 | 1k+ | Output is not escaped | ||
| #2564 | Zen Feed | 39 | 39 | 22 | 400 | Output is not escaped | ||
| #2565 | Mizan Demo Importer | 39 | 31 | 91 | 1k+ | Missing nonce verification | ||
| #2566 | Modal Dialog | 39 | 64 | 64 | 500 | Output is not escaped | ||
| #2567 | Movable Type and TypePad Importer | 39 | 42 | 25 | 20k+ | Output is not escaped | ||
| #2568 | Multilingual Contact Form 7 with Polylang | 39 | 50 | 30 | 9k+ | Text Domain Mismatch | ||
| #2569 | Social Proof Popups & Real-Time Notifications – Herd Effects | 39 | 5 | 181 | 1k+ | Non-prefixed global variable | ||
| #2570 | SOGO Add Script to Individual Pages Header Footer | 39 | 74 | 40 | 20k+ | Output is not escaped | ||
| #2571 | Pay by paynow.pl | 39 | 51 | 56 | 6k+ | Output is not escaped | ||
| #2572 | payever – WooCommerce Gateway | 39 | 263 | 131 | 800 | Text Domain Mismatch | ||
| #2573 | Designil PDPA Thailand | 39 | 131 | 36 | 3k+ | Output is not escaped | ||
| #2574 | PickPlugins Pricing Table | 39 | 3 | 171 | 1k+ | Missing nonce verification | ||
| #2575 | Privilege Menu | 39 | 215 | 49 | 1k+ | Text Domain Mismatch | ||
| #2576 | Product Size Chart for Woocommerce | 39 | 20 | 169 | 600 | Non-prefixed global variable | ||
| #2577 | Purge Varnish Cache | 39 | 113 | 151 | 1k+ | Non-prefixed global variable | ||
| #2578 | Query Multiple Taxonomies | 39 | 55 | 41 | 500 | Output is not escaped | ||
| #2579 | Quform Mailchimp | 39 | 65 | 147 | 800 | Nonce verification recommended | ||
| #2580 | Quform Zapier | 39 | 60 | 123 | 1k+ | Nonce verification recommended | ||
| #2581 | Simple Webchat | 39 | 142 | 204 | 1k+ | Output is not escaped | ||
| #2582 | Radio Buttons for Taxonomies | 39 | 40 | 24 | 20k+ | Output is not escaped | ||
| #2583 | Re Gallery – Responsive Image & Photo Gallery | 39 | 16 | 121 | 700 | Missing nonce verification | ||
| #2584 | REST API Helper | 39 | 108 | 85 | 500 | Unsafe printing function | ||
| #2585 | Royal Mail Shipping Calculator for WooCommerce | 39 | 61 | 31 | 1k+ | Text Domain Mismatch | ||
| #2586 | Serial Number for Contact Form 7 | 39 | 105 | 53 | 2k+ | Non Singular String Literal Domain | ||
| #2587 | Taxonomy Thumbnail | 39 | 27 | 58 | 3k+ | Non-prefixed function | ||
| #2588 | Shared Files – File Upload & Download Manager | 39 | 5 | 184 | 4k+ | Nonce verification recommended | ||
| #2589 | Shipping by Rules for WooCommerce | 39 | 130 | 48 | 500 | Output is not escaped | ||
| #2590 | Shipping Simulator for WooCommerce | 39 | 120 | 39 | 5k+ | Text Domain Mismatch | ||
| #2591 | Simpaisa Wallet (Jazzcash & Easypaisa) Payment Services | 39 | 67 | 74 | 1k+ | Interpolated Variable Text | ||
| #2592 | Simple Membership WP user Import | 39 | 22 | 46 | 4k+ | Request data is not unslashed | ||
| #2593 | SKP WP Admin Login Captcha | 39 | 77 | 18 | 1k+ | Output is not escaped | ||
| #2594 | Slider Text Scroll | 39 | 95 | 52 | 400 | Text Domain Mismatch | ||
| #2595 | Smaily for WP | 39 | 52 | 36 | 600 | Output is not escaped | ||
| #2596 | Smart Archives Reloaded | 39 | 78 | 36 | 1k+ | Non Singular String Literal Domain | ||
| #2597 | SMTP | 39 | 54 | 15 | 700 | Non Singular String Literal Domain | ||
| #2598 | Spreadr Woocommerce Plugin – Amazon Importer for Dropshipping and Affiliate | 39 | 42 | 226 | 500 | Request data is not unslashed | ||
| #2599 | Stock Ticker | 39 | 92 | 49 | 2k+ | Output is not escaped | ||
| #2600 | Substack Importer | 39 | 33 | 33 | 1k+ | Missing nonce verification |