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 |
|---|---|---|---|---|---|---|---|---|
| #501 | YITH WooCommerce Product Add-Ons | 24 | 460 | 2,069 | 20k+ | Non-prefixed global variable | ||
| #502 | YITH WooCommerce Waitlist | 24 | 420 | 1,500 | 3k+ | Non-prefixed global variable | ||
| #503 | YITH WooCommerce Product Gallery & Image Zoom | 24 | 418 | 1,490 | 20k+ | Non-prefixed global variable | ||
| #504 | Jetpack CRM – Clients, Leads, Invoices, Billing, Email Marketing, & Automation | 24 | 1,211 | 3,152 | 30k+ | Non-prefixed global variable | ||
| #505 | 3DPrint Lite | 25 | 175 | 1,029 | 700 | Non-prefixed global variable | ||
| #506 | AdRotate Banner Manager | 25 | 1,363 | 846 | 20k+ | Unsafe printing function | ||
| #507 | Advanced WordPress Reset – Debug, Recover & Reset WP | 25 | 475 | 464 | 20k+ | Output is not escaped | ||
| #508 | AF Companion – Starter Sites, Speed Booster & Growth Suite for Professional Publishing | 25 | 665 | 1,486 | 10k+ | Non-prefixed global variable | ||
| #509 | Affiliates | 25 | 689 | 1,483 | 2k+ | Output is not escaped | ||
| #510 | FiboSearch – Ajax Search for WooCommerce | 25 | 603 | 302 | 100k+ | Output is not escaped | ||
| #511 | AliExpress Dropshipping Plugin for WooCommerce Stores | 25 | 555 | 734 | 4k+ | Text Domain Mismatch | ||
| #512 | Appointment Booking Calendar | 25 | 327 | 1,055 | 1k+ | Non-prefixed global variable | ||
| #513 | Appointment Hour Booking – Booking Calendar | 25 | 262 | 1,253 | 10k+ | Non-prefixed global variable | ||
| #514 | ATUM WooCommerce Inventory Management and Stock Tracking | 25 | 2,634 | 1,306 | 10k+ | Non Singular String Literal Domain | ||
| #515 | bbp style pack | 25 | 1,419 | 1,791 | 6k+ | Output is not escaped | ||
| #516 | Beaver Builder Page Builder – Drag and Drop Website Builder | 25 | 4,463 | 1,819 | 100k+ | Text Domain Mismatch | ||
| #517 | Booking Activities | 25 | 1,036 | 1,469 | 3k+ | Output is not escaped | ||
| #518 | Booking Calendar Contact Form | 25 | 371 | 884 | 500 | Input is not validated | ||
| #519 | Booking Package | 25 | 1,697 | 3,977 | 10k+ | Missing nonce verification | ||
| #520 | Online Scheduling and Appointment Booking System – Bookly | 25 | 1,088 | 888 | 60k+ | SQL query is not prepared | ||
| #521 | Breeze Cache | 25 | 218 | 800 | 400k+ | Non-prefixed global variable | ||
| #522 | Broken Link Checker | 25 | 727 | 600 | 500k+ | Output is not escaped | ||
| #523 | BuddyPress Docs | 25 | 284 | 421 | 7k+ | Nonce verification recommended | ||
| #524 | Bulk Edit Categories and Tags – Create Thousands Quickly on the Editor | 25 | 1,041 | 1,016 | 4k+ | Text Domain Mismatch | ||
| #525 | PublishPress Capabilities – User Role Editor, Access Permissions, User Capabilities, Admin Menus | 25 | 362 | 1,586 | 100k+ | Non-prefixed global variable | ||
| #526 | CheckoutWC Lite – Conversion optimized WooCommerce checkout | 25 | 1,416 | 854 | 3k+ | Text Domain Mismatch | ||
| #527 | CheckView – Form & Checkout Testing | 25 | 66 | 337 | 1k+ | Direct Query | ||
| #528 | Admin Columns | 25 | 613 | 995 | 100k+ | Non-prefixed namespace | ||
| #529 | Disable Comments & Delete All Comments | 25 | 503 | 185 | 9k+ | Output is not escaped | ||
| #530 | Contact Form Email | 25 | 409 | 898 | 9k+ | Non-prefixed global variable | ||
| #531 | Coupon Creator | 25 | 698 | 412 | 1k+ | Output is not escaped | ||
| #532 | CP Contact Form with PayPal | 25 | 466 | 936 | 800 | Unsafe printing function | ||
| #533 | Smash Balloon Social Post Feed – Simple Social Feeds for WordPress | 25 | 554 | 982 | 200k+ | Output is not escaped | ||
| #534 | Disable Admin Notices – Hide Dashboard Notifications | 25 | 465 | 195 | 100k+ | Output is not escaped | ||
| #535 | ELEX WooCommerce Dynamic Pricing and Discounts | 25 | 478 | 748 | 800 | Text Domain Mismatch | ||
| #536 | Show Eventbrite Events – Event Feed for Eventbrite | 25 | 595 | 1,525 | 800 | Non-prefixed global variable | ||
| #537 | 胖鼠采集(Fat Rat Collect) | 25 | 630 | 190 | 900 | Missing Arg Domain | ||
| #538 | FlatPM – Ad Manager, AdSense and Custom Code | 25 | 3,017 | 557 | 10k+ | Text Domain Mismatch | ||
| #539 | FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler | 25 | 319 | 454 | 7k+ | Non-prefixed global variable | ||
| #540 | Fluid Checkout for WooCommerce – Lite | 25 | 370 | 841 | 20k+ | Non-prefixed hook name | ||
| #541 | FunnelKit – Funnel Builder for WooCommerce Checkout | 25 | 3,164 | 2,624 | 30k+ | Text Domain Mismatch | ||
| #542 | Gallery Images Ape | 25 | 588 | 341 | 1k+ | Output is not escaped | ||
| #543 | GD Rating System | 25 | 1,511 | 1,043 | 1k+ | Output is not escaped | ||
| #544 | Genesis Club Lite | 25 | 513 | 317 | 900 | Output is not escaped | ||
| #545 | Simple Giveaways – Grow your business, email lists and traffic with contests | 25 | 956 | 2,384 | 400 | Non-prefixed global variable | ||
| #546 | WPBruiser {no- Captcha anti-Spam} | 25 | 646 | 259 | 10k+ | Non Singular String Literal Domain | ||
| #547 | Logo Slider – Logo Showcase, Logo Carousel, Logo Gallery and Client Logo Presentation | 25 | 789 | 313 | 30k+ | Text Domain Mismatch | ||
| #548 | Team Members – A WordPress Team Plugin with Gallery, Grid, Carousel, Slider, Table, List, and More | 25 | 1,784 | 2,222 | 2k+ | Non-prefixed global variable | ||
| #549 | Solid Testimonials – Testimonial Slider, Video Testimonials & Customer Reviews | 25 | 645 | 1,585 | 1k+ | Non-prefixed global variable | ||
| #550 | Cool Author Box – For Widget and Post Content | 25 | 853 | 1,379 | 600 | Non-prefixed global variable |