PluginCheck.Security.DirectDB.UnescapedDBParameter
Database parameter is not escaped
A value is passed into database-related code without escaping, preparation, or strict allowlisting.
Why It Shows Up
Plugin Check found a database parameter that appears to come from dynamic input without the usual `$wpdb->prepare()` protection.
Why It Matters
Database parameters often influence queries directly. Unsafe values can corrupt data access or create SQL injection risk.
How to Fix
- Use `$wpdb->prepare()` for values.
- Use explicit allowlists for table names, column names, order fields, and directions.
- Sanitize and validate request data before it reaches query construction.
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Updated | Top Issue |
|---|---|---|---|---|---|---|---|
| #1 | BulletProof Security | 0 | 5,048 | 4,949 | 20k+ | Output is not escaped | |
| #2 | Plugin Check (PCP) | 0 | 128 | 132 | 10k+ | Exception output is not escaped | |
| #3 | Themify Builder | 9 | 5,195 | 2,096 | 5k+ | Text Domain Mismatch | |
| #4 | JetBackup – Backup, Restore & Migrate | 10 | 1,559 | 145 | 100k+ | Exception output is not escaped | |
| #5 | Easy WP SMTP – WordPress SMTP and Email Logs: Gmail, Office 365, Outlook, Custom SMTP, and more | 15 | 32 | 163 | 500k+ | Direct Query | |
| #6 | AnyComment | 17 | 445 | 449 | 5k+ | Output is not escaped | |
| #7 | JetFormBuilder — Dynamic Blocks Form Builder | 17 | 2,094 | 1,588 | 90k+ | Text Domain Mismatch | |
| #8 | wpForo Forum | 17 | 4,033 | 2,922 | 20k+ | Unsafe printing function | |
| #9 | WPtouch – Make your WordPress Website Mobile-Friendly | 17 | 1,466 | 325 | 50k+ | Text Domain Mismatch | |
| #10 | Prime Slider Addons for Elementor | 18 | 3,500 | 230 | 100k+ | Text Domain Mismatch | |
| #11 | Podlove Podcast Publisher | 18 | 2,326 | 1,429 | 3k+ | Output is not escaped | |
| #12 | Property Hive | 18 | 1,957 | 6,027 | 3k+ | Missing nonce verification | |
| #13 | Shopping Cart & eCommerce Store | 18 | 5,459 | 17,298 | 4k+ | Non-prefixed global variable | |
| #14 | WP Import Export Lite | 18 | 738 | 979 | 40k+ | Non-prefixed global variable | |
| #15 | WP Directory Kit | 18 | 2,119 | 2,617 | 2k+ | Non-prefixed global variable | |
| #16 | Element Pack – Widgets, Templates & Addons for Elementor | 19 | 9,448 | 517 | 100k+ | Text Domain Mismatch | |
| #17 | Block Slider – Responsive Image Slider, Video Slider & Post Slider | 19 | 555 | 1,291 | 3k+ | Non-prefixed global variable | |
| #18 | Download Monitor | 19 | 425 | 1,364 | 80k+ | Non-prefixed hook name | |
| #19 | Event Organiser | 19 | 1,106 | 544 | 20k+ | Text Domain Mismatch | |
| #20 | Advanced File Manager – Ultimate File Manager for WordPress And Document Library Solution | 19 | 1,218 | 901 | 100k+ | Exception output is not escaped | |
| #21 | Leaflet Maps Marker (Google Maps, OpenStreetMap, Bing Maps) | 19 | 3,275 | 3,228 | 10k+ | Output is not escaped | |
| #22 | Matomo Analytics – Powerful, Privacy-First Insights for WordPress | 19 | 1,909 | 878 | 100k+ | Exception output is not escaped | |
| #23 | Search Atlas SEO – Premier SEO Plugin for One-Click WP Publishing & Integrated AI Optimization | 19 | 1,295 | 2,679 | 9k+ | Output is not escaped | |
| #24 | Really Simple Security – Simple and Performant Security (formerly Really Simple SSL) | 19 | 541 | 385 | 3m+ | Missing Translators Comment | |
| #25 | Membership Plugin – Kadence Memberships | 19 | 5,082 | 2,982 | 9k+ | Text Domain Mismatch | |
| #26 | Scrollsequence – Cinematic Scroll Image Animation Plugin | 19 | 878 | 1,528 | 4k+ | Non-prefixed global variable | |
| #27 | SendPress Newsletters | 19 | 2,293 | 1,422 | 2k+ | Output is not escaped | |
| #28 | SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments | 19 | 526 | 1,119 | 90k+ | Non-prefixed global variable | |
| #29 | WP Email Template | 19 | 342 | 350 | 2k+ | Exception output is not escaped | |
| #30 | BetterDocs – AI Documentation, Knowledge Base, Docs, Wikis, FAQ with Chatbot | 20 | 508 | 1,406 | 30k+ | Non-prefixed global variable | |
| #31 | Brizy – Page Builder | 20 | 589 | 720 | 70k+ | Output is not escaped | |
| #32 | Filter Everything — WordPress & WooCommerce Filters | 20 | 568 | 730 | 50k+ | Output is not escaped | |
| #33 | GiveWP – Donation Plugin and Fundraising Platform | 20 | 3,435 | 3,580 | 100k+ | Output is not escaped | |
| #34 | Link Library | 20 | 1,941 | 1,397 | 10k+ | Unsafe printing function | |
| #35 | MBE eShip | 20 | 527 | 740 | 1k+ | Non-prefixed global variable | |
| #36 | Brevo – Email, SMS, Web Push, Chat, and more. | 20 | 460 | 646 | 100k+ | Request data is not unslashed | |
| #37 | MAS Videos | 20 | 519 | 1,693 | 1k+ | Non-prefixed global variable | |
| #38 | Microthemer Lite – Visual Editor to Customize CSS | 20 | 1,004 | 1,699 | 10k+ | Non-prefixed global variable | |
| #39 | Nimble Page Builder | 20 | 1,591 | 1,684 | 30k+ | Missing Arg Domain | |
| #40 | Pix por Piggly (para Woocommerce) | 20 | 547 | 195 | 4k+ | Exception output is not escaped | |
| #41 | Powered Cache – Caching and Optimization for WordPress – Easily Improve PageSpeed & Web Vitals Score | 20 | 147 | 231 | 3k+ | Exception output is not escaped | |
| #42 | Quill Forms | Conversational Multi Step Forms, Surveys & quizzes | 20 | 401 | 368 | 3k+ | Text Domain Mismatch | |
| #43 | Remove Add to Cart WooCommerce | 20 | 616 | 1,378 | 4k+ | Non-prefixed global variable | |
| #44 | Robin Image Optimizer – Unlimited Image Optimization, WebP & AVIF | 20 | 557 | 541 | 100k+ | Output is not escaped | |
| #45 | SpeakOut! Email Petitions | 20 | 850 | 994 | 3k+ | Missing nonce verification | |
| #46 | Trace My IP – Visitor IP Tracker, Stats Analytics & Page Views Counter with Email Alerts | 20 | 866 | 338 | 1k+ | wp function not compatible with requires wp | |
| #47 | Razorpay for WooCommerce | 20 | 974 | 855 | 100k+ | Non-prefixed function | |
| #48 | WPJAM Basic | 20 | 328 | 356 | 4k+ | Output is not escaped | |
| #49 | Store Locator WordPress | 21 | 2,372 | 1,572 | 10k+ | Text Domain Mismatch | |
| #50 | Backup Migration | 21 | 981 | 1,093 | 80k+ | Non-prefixed global variable |