WordPress.Security.ValidatedSanitizedInput.MissingUnslash
Request data is not unslashed
Input from a WordPress request superglobal is used before removing WordPress-added slashes.
Why It Shows Up
WordPress adds slashes to request data for historical compatibility. The scan found `$_GET`, `$_POST`, `$_REQUEST`, or similar input used without `wp_unslash()`.
Why It Matters
Sanitizing slashed data can produce incorrect values, failed comparisons, broken validation, or stored data that does not match what the user submitted.
How to Fix
- Read the specific request key, then call `wp_unslash()` on it.
- Sanitize the unslashed value with a function that matches the expected data type.
- Validate the sanitized value before using it in permissions, queries, redirects, or stored settings.
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #5301 | JWT Authentication for WP REST API | 84 | 27 | 41 | 60k+ | wp function not compatible with requires wp | ||
| #5302 | Mailster reCaptcha | 84 | 4 | 15 | 1k+ | Missing nonce verification | ||
| #5303 | PW WooCommerce Exclude Free Shipping | 84 | 1 | 12 | 1k+ | Missing nonce verification | ||
| #5304 | Replace Image | 84 | 5 | 13 | 8k+ | Input is not sanitized | ||
| #5305 | Search by ID | 84 | 3 | 5 | 700 | Input is not sanitized | ||
| #5306 | Upload SVG | 84 | 3 | 8 | 1k+ | Non-prefixed global variable | ||
| #5307 | UTMs Carry Pages | 84 | 4 | 11 | 400 | Non-prefixed global variable | ||
| #5308 | Web Stories | 84 | 12 | 63 | 60k+ | Non-prefixed global variable | ||
| #5309 | Widgets for Google Reviews and Ratings | 84 | 2 | 10 | 2k+ | Missing nonce verification | ||
| #5310 | WP Force Lowercase URLs | 84 | 2 | 9 | 6k+ | trademarked term | ||
| #5311 | WP Link Preview | 84 | 4 | 9 | 500 | trademarked term | ||
| #5312 | WP PDF Generator | 84 | 21 | 22 | 1k+ | Request data is not unslashed | ||
| #5313 | ACF Nav Menu Field | 85 | 16 | 6 | 2k+ | Text Domain Mismatch | ||
| #5314 | Advanced Post Manager | 85 | 11 | 18 | 4k+ | Request data is not unslashed | ||
| #5315 | Backlinks Saver | 85 | 3 | 5 | 3k+ | Deprecated parameter value found | ||
| #5316 | Better Business Reviews – Trustpilot WordPress Plugin | 85 | 4 | 7 | 3k+ | Output is not escaped | ||
| #5317 | Popups – Submission Messages For Contact Form 7 | 85 | 2 | 7 | 3k+ | Input is not sanitized | ||
| #5318 | Custom Classes | 85 | 5 | 8 | 2k+ | Request data is not unslashed | ||
| #5319 | Easy UTM Tracking with Contact Form 7 | 85 | 3 | 10 | 2k+ | Input is not validated | ||
| #5320 | FontFlow Custom Icons for Elementor | 85 | 29 | 15 | 700 | Text Domain Mismatch | ||
| #5321 | reCaptcha Add-On for FormCraft | 85 | 4 | 16 | 7k+ | Missing Version | ||
| #5322 | HSTS Ready | 85 | 3 | 11 | 3k+ | Input is not validated | ||
| #5323 | Jotform – AI Chatbot | 85 | 8 | 5k+ | Input is not validated | |||
| #5324 | Marquee Running Text | 85 | 11 | 7 | 5k+ | Missing direct file access protection | ||
| #5325 | MD5 Media Renamer | 85 | 8 | 19 | 400 | Non-prefixed global variable | ||
| #5326 | PlayerJS – Free Custom HTML5 Video and Audio Player Builder | 85 | 1 | 13 | 1k+ | Missing Version | ||
| #5327 | Remove Footer Credit | 85 | 7 | 31 | 70k+ | Non-prefixed global variable | ||
| #5328 | Static 404 | 85 | 1 | 7 | 3k+ | Input is not sanitized | ||
| #5329 | StoreOne Extension | 85 | 68 | 7 | 400 | Text Domain Mismatch | ||
| #5330 | TinyMCE Color Picker | 85 | 2 | 7 | 1k+ | Input is not sanitized | ||
| #5331 | Export Orders for WooCommerce – CSV, Excel, XML, JSON & PDF Export | 85 | 24 | 9 | 400 | wp function not compatible with requires wp | ||
| #5332 | WP Revisions Control | 85 | 9 | 6 | 40k+ | wp function not compatible with requires wp | ||
| #5333 | Astra Widgets | 86 | 10 | 15 | 200k+ | Missing direct file access protection | ||
| #5334 | Classic Editor + | 86 | 1 | 4 | 40k+ | Input is not sanitized | ||
| #5335 | Greenshift Smart Code AI | 86 | 9 | 9 | 1k+ | Request data is not unslashed | ||
| #5336 | Modern Cart – WooCommerce Side Cart & Popup Cart | 86 | 8 | 95 | 50k+ | Non-prefixed global variable | ||
| #5337 | Nice page transition | 86 | 4 | 12 | 1k+ | Direct Query | ||
| #5338 | Payment Gateway Icons For WooCommerce | 86 | 2 | 4 | 1k+ | Input is not sanitized | ||
| #5339 | Sharespine Woocommerce Connector | 86 | 2 | 16 | 500 | error log error log | ||
| #5340 | Subtitles | 86 | 4 | 9 | 3k+ | Non-prefixed hook name | ||
| #5341 | Title Remover | 86 | 7 | 5 | 70k+ | wp function not compatible with requires wp | ||
| #5342 | Variation Swatches for WooCommerce – Color, Image & Size Swatches | 86 | 2 | 17 | 200k+ | Request data is not unslashed | ||
| #5343 | Delete product images for WooCommerce | 86 | 3 | 13 | 1k+ | Direct Query | ||
| #5344 | PayPal Enterprise Payments (formerly Braintree) for WooCommerce | 86 | 3 | 33 | 10k+ | Direct Query | ||
| #5345 | WordClever – AI Content Writer | 86 | 4 | 2 | 3k+ | Missing direct file access protection | ||
| #5346 | WP Consent API | 86 | 2 | 10 | 200k+ | Input is not sanitized | ||
| #5347 | WP101 Video Tutorial Plugin | 86 | 15 | 18 | 10k+ | Missing direct file access protection | ||
| #5348 | Advanced Image Comparison for Elementor | 87 | 1 | 5 | 1k+ | Nonce verification recommended | ||
| #5349 | Author Filters | 87 | 2 | 7 | 1k+ | Nonce verification recommended | ||
| #5350 | SmartText Rotator – Add Motion to Your Words | 87 | 88 | 6 | 1k+ | Text Domain Mismatch |