WordPress.Security.EscapeOutput.UnsafePrintingFunction
Unsafe printing function
A printing function is outputting dynamic content without proving that the content is escaped.
Why It Shows Up
The scan saw output through functions such as `printf`, `print`, or similar constructs where the printed values were not escaped for their context.
Why It Matters
Formatted output is still browser output. If any argument contains attacker-controlled content, the page can become vulnerable to cross-site scripting.
How to Fix
- Escape every dynamic argument with `esc_html()`, `esc_attr()`, `esc_url()`, or `wp_kses()` as appropriate.
- Keep translation wrappers and escaping wrappers in the correct order, such as `esc_html__( 'Text', 'text-domain' )` for translated text.
- Avoid marking values as safe unless they are hard-coded or already strictly constrained.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #1 | BulletProof Security | 0 | 5,048 | 4,949 | 20k+ | Output is not escaped | ||
| #2 | Themify Builder | 9 | 5,334 | 2,171 | 5k+ | Text Domain Mismatch | ||
| #3 | MDTF – Meta Data and Taxonomies Filter | 16 | 1,550 | 1,956 | 1k+ | Non-prefixed global variable | ||
| #4 | AnyComment | 17 | 445 | 449 | 5k+ | Output is not escaped | ||
| #5 | Shopping Cart & eCommerce Store | 17 | 8,038 | 17,464 | 3k+ | Non-prefixed global variable | ||
| #6 | wpForo Forum | 17 | 4,306 | 3,026 | 20k+ | Unsafe printing function | ||
| #7 | WPtouch – Make your WordPress Website Mobile-Friendly | 17 | 1,466 | 325 | 50k+ | Text Domain Mismatch | ||
| #8 | Administrator Z | 18 | 2,061 | 799 | 400 | Output is not escaped | ||
| #9 | Property Hive | 18 | 1,957 | 6,027 | 3k+ | Missing nonce verification | ||
| #10 | WPPizza – A Restaurant Plugin | 18 | 4,689 | 2,703 | 1k+ | Text Domain Mismatch | ||
| #11 | Advanced File Manager – Ultimate File Manager for WordPress And Document Library Solution | 19 | 1,227 | 892 | 100k+ | Exception output is not escaped | ||
| #12 | GiveWP – Donation Plugin and Fundraising Platform | 19 | 3,417 | 3,563 | 100k+ | Output is not escaped | ||
| #13 | Go Fetch Jobs (for WP Job Manager) | 19 | 1,410 | 1,741 | 700 | Non-prefixed global variable | ||
| #14 | Leaflet Maps Marker (Google Maps, OpenStreetMap, Bing Maps) | 19 | 3,275 | 3,228 | 9k+ | Output is not escaped | ||
| #15 | Verified Reviews (Avis Vérifiés) | 19 | 671 | 1,136 | 700 | Non-prefixed global variable | ||
| #16 | Really Simple Security – Simple and Performant Security (formerly Really Simple SSL) | 19 | 531 | 378 | 3m+ | Missing Translators Comment | ||
| #17 | Membership Plugin – Kadence Memberships | 19 | 5,085 | 3,003 | 9k+ | Text Domain Mismatch | ||
| #18 | Scrollsequence – Cinematic Scroll Image Animation Plugin | 19 | 878 | 1,528 | 3k+ | Non-prefixed global variable | ||
| #19 | SendPress Newsletters | 19 | 2,293 | 1,422 | 1k+ | Output is not escaped | ||
| #20 | SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments | 19 | 534 | 1,161 | 80k+ | Non-prefixed global variable | ||
| #21 | WP Import Export Lite | 19 | 737 | 979 | 40k+ | Non-prefixed global variable | ||
| #22 | WP Directory Kit | 19 | 1,502 | 2,641 | 2k+ | Non-prefixed global variable | ||
| #23 | Brizy – Page Builder | 20 | 585 | 726 | 70k+ | Output is not escaped | ||
| #24 | Post Form – Registration Form – Profile Form for User Profiles – Frontend Content Forms for User Submissions (UGC) | 20 | 736 | 2,112 | 900 | Non-prefixed global variable | ||
| #25 | Download Monitor | 20 | 423 | 1,367 | 80k+ | Non-prefixed hook name | ||
| #26 | Ebook Store | 20 | 405 | 1,065 | 700 | Non-prefixed global variable | ||
| #27 | Event Espresso – Event Registration & Ticketing Sales | 20 | 12,698 | 2,135 | 600 | Text Domain Mismatch | ||
| #28 | Event Organiser | 20 | 1,104 | 544 | 20k+ | Text Domain Mismatch | ||
| #29 | Brevo – Email, SMS, Web Push, Chat, and more. | 20 | 460 | 646 | 100k+ | Request data is not unslashed | ||
| #30 | MAS Videos | 20 | 519 | 1,693 | 1k+ | Non-prefixed global variable | ||
| #31 | Nimble Page Builder | 20 | 1,591 | 1,684 | 30k+ | Missing Arg Domain | ||
| #32 | Shipping for Nova Poshta | 20 | 598 | 923 | 400 | Output is not escaped | ||
| #33 | پلاگین پرداخت دلخواه | 20 | 584 | 446 | 900 | Text Domain Mismatch | ||
| #34 | Pix por Piggly (para Woocommerce) | 20 | 547 | 195 | 4k+ | Exception output is not escaped | ||
| #35 | Remove Add to Cart WooCommerce | 20 | 616 | 1,378 | 4k+ | Non-prefixed global variable | ||
| #36 | Restrict User Access – Ultimate Membership & Content Protection | 20 | 977 | 1,848 | 10k+ | Non-prefixed global variable | ||
| #37 | Robin Image Optimizer – Unlimited Image Optimization, WebP & AVIF | 20 | 556 | 543 | 100k+ | Output is not escaped | ||
| #38 | SpeakOut! Email Petitions | 20 | 850 | 994 | 2k+ | Missing nonce verification | ||
| #39 | Events Manager – OpenStreetMaps | 20 | 559 | 444 | 600 | Output is not escaped | ||
| #40 | Razorpay for WooCommerce | 20 | 975 | 859 | 100k+ | Non-prefixed function | ||
| #41 | WP Minify Fix | 20 | 306 | 380 | 800 | Output is not escaped | ||
| #42 | Premium Packages – Sell Digital Products Securely | 20 | 2,018 | 2,186 | 2k+ | Non-prefixed global variable | ||
| #43 | 12 Step Meeting List | 21 | 149 | 594 | 900 | Non-prefixed global variable | ||
| #44 | Forumax – AI Powered Advanced Community Forum Plugin | 21 | 4,931 | 4,352 | 600 | Text Domain Mismatch | ||
| #45 | bbPress | 21 | 929 | 3,672 | 100k+ | Non-prefixed function | ||
| #46 | Kadence Security – Password, Two Factor Authentication, and Brute Force Protection | 21 | 1,060 | 957 | 700k+ | Missing Translators Comment | ||
| #47 | Booking Ultra Pro Appointments Booking Calendar Plugin | 21 | 761 | 2,083 | 400 | Request data is not unslashed | ||
| #48 | Better Messages – Chat Rooms, Group Chat, Private Messages & AI Chat Bots | 21 | 1,624 | 2,048 | 10k+ | Direct Query | ||
| #49 | Captcha Them All | 21 | 300 | 323 | 5k+ | Output is not escaped | ||
| #50 | SMS Extension for Contact Form 7 | 21 | 720 | 1,387 | 400 | Non-prefixed global variable |