missing_direct_file_access_protection
Missing direct file access protection
A PHP file in the plugin can be loaded directly instead of through WordPress.
Why It Shows Up
Plugin Check found a PHP file without an early guard such as an ABSPATH check. Without that guard, a browser or script can request the file by path.
Why It Matters
Direct access can run code outside the normal WordPress bootstrap, expose output, or trigger assumptions about loaded functions, permissions, and request context.
How to Fix
- Add a guard near the top of PHP files that are not intended to be requested directly.
- Use `if ( ! defined( 'ABSPATH' ) ) { exit; }` before the file performs work or sends output.
- Keep template partials and bootstrap files protected too, not only the main plugin file.
Notes
- Files that are deliberately public endpoints should route through WordPress APIs or explicitly validate the request before doing work.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #1051 | WP Google Review Slider | 25 | 1,366 | 2,584 | 30k+ | Non-prefixed global variable | ||
| #1052 | WP Encryption – No.1 HTTPS plugin & One Click Free SSL Cert, HTTPS Redirect, SSL Security | 25 | 875 | 1,764 | 50k+ | Non-prefixed global variable | ||
| #1053 | Nested Pages | 25 | 674 | 560 | 90k+ | Non-prefixed global variable | ||
| #1054 | WP-Polls | 25 | 618 | 639 | 40k+ | Unsafe printing function | ||
| #1055 | WP Popups – WordPress Popup builder | 25 | 440 | 342 | 30k+ | Output is not escaped | ||
| #1056 | Perfect Images: Regenerate Thumbnails, Image Sizes, WebP & AVIF | 25 | 158 | 118 | 60k+ | Non-prefixed global variable | ||
| #1057 | Bulk Edit Posts and Products in Spreadsheet | 25 | 934 | 944 | 8k+ | Text Domain Mismatch | ||
| #1058 | SlimStat Analytics | 25 | 1,177 | 870 | 70k+ | Exception output is not escaped | ||
| #1059 | Smush – Image Optimization, Compression, Lazy Load, WebP & CDN | 25 | 244 | 568 | 1m+ | Non-prefixed hook name | ||
| #1060 | Wp Social Login and Register Social Counter | 25 | 80 | 738 | 90k+ | Non-prefixed global variable | ||
| #1061 | WP Statistics – Simple, privacy-friendly Google Analytics alternative | 25 | 610 | 2,465 | 600k+ | Non-prefixed global variable | ||
| #1062 | WP Super Cache | 25 | 800 | 989 | 1m+ | Output is not escaped | ||
| #1063 | WP Time Slots Booking Form | 25 | 439 | 1,137 | 1k+ | Non-prefixed global variable | ||
| #1064 | WP TripAdvisor Review Slider | 25 | 1,063 | 2,582 | 8k+ | Non-prefixed global variable | ||
| #1065 | WP Yelp Review Slider | 25 | 600 | 1,086 | 1k+ | Non-prefixed global variable | ||
| #1066 | WPCargo Track & Trace | 25 | 239 | 557 | 10k+ | Non-prefixed global variable | ||
| #1067 | Team Members Showcase | 25 | 591 | 1,494 | 4k+ | Non-prefixed global variable | ||
| #1068 | WPvivid Backup for MainWP | 25 | 818 | 1,794 | 10k+ | Missing nonce verification | ||
| #1069 | WPvivid — Backup, Migration & Staging | 25 | 900 | 1,461 | 900k+ | Non-prefixed namespace | ||
| #1070 | Backup, Restore and Migrate your sites with XCloner | 25 | 238 | 864 | 10k+ | Input is not sanitized | ||
| #1071 | XT Quick View for WooCommerce | 25 | 1,062 | 1,798 | 400 | Non-prefixed global variable | ||
| #1072 | YeeMail — Email Template Builder & Customizer | 25 | 606 | 222 | 600 | wp function not compatible with requires wp | ||
| #1073 | ActiveCampaign for WooCommerce | 26 | 541 | 190 | 5k+ | Exception output is not escaped | ||
| #1074 | AfterShip Tracking – All-In-One WooCommerce Order Tracking (Free plan available) | 26 | 286 | 291 | 8k+ | Text Domain Mismatch | ||
| #1075 | AI Content Writing Assistant | 26 | 1,069 | 516 | 700 | Text Domain Mismatch | ||
| #1076 | Attesa Extra | 26 | 316 | 151 | 1k+ | Output is not escaped | ||
| #1077 | A WP Life Companion | 26 | 1,703 | 458 | 6k+ | Text Domain Mismatch | ||
| #1078 | Bangladeshi Payments Mobile – QR Code & Transaction Reports | 26 | 535 | 1,280 | 1k+ | Non-prefixed global variable | ||
| #1079 | Blog Floating Button | 26 | 705 | 240 | 9k+ | Output is not escaped | ||
| #1080 | Booking Manager – Sync WP Booking Calendar – Import Events, Export Bookings to ICS Calendar | 26 | 526 | 263 | 5k+ | Output is not escaped | ||
| #1081 | Charitable – Donation Plugin for WordPress – Fundraising with Recurring Donations & More | 26 | 97 | 270 | 10k+ | error log error log | ||
| #1082 | Floating Chat Widget: Contact Chat Icons, Telegram Chat, Line Messenger, WeChat, Email, SMS, Call Button – Chaty | 26 | 113 | 671 | 400k+ | Non-prefixed global variable | ||
| #1083 | Translate WordPress with ConveyThis – AI Multilingual Plugin | 26 | 159 | 297 | 1k+ | Non-prefixed global variable | ||
| #1084 | CP Multi View Events Calendar | 26 | 86 | 439 | 900 | Non-prefixed global variable | ||
| #1085 | Cyclone Demo Importer | 26 | 1,778 | 448 | 10k+ | Text Domain Mismatch | ||
| #1086 | WP Frontend Admin – Display WP Admin Pages in the Frontend | 26 | 347 | 337 | 400 | Non Singular String Literal Domain | ||
| #1087 | Ditty – Responsive News Tickers, Sliders, and Lists | 26 | 561 | 484 | 30k+ | Output is not escaped | ||
| #1088 | Accept Donations with PayPal & Stripe | 26 | 916 | 572 | 10k+ | Unsafe printing function | ||
| #1089 | Easy Post Views Count | 26 | 534 | 1,180 | 2k+ | Non-prefixed global variable | ||
| #1090 | ELEX WooCommerce Google Shopping (Google Product Feed) | 26 | 226 | 242 | 1k+ | Text Domain Mismatch | ||
| #1091 | Event Monster – Event Manager, Ticket Booking & Registration | 26 | 781 | 781 | 600 | Non-prefixed global variable | ||
| #1092 | RSS Redirect & Feedburner Alternative | 26 | 277 | 272 | 1k+ | Output is not escaped | ||
| #1093 | FG Drupal to WordPress | 26 | 275 | 100 | 700 | Unsafe printing function | ||
| #1094 | FG PrestaShop to WooCommerce | 26 | 254 | 94 | 900 | Unsafe printing function | ||
| #1095 | FlagShip WooCommerce Shipping | 26 | 495 | 188 | 400 | Non Singular String Literal Domain | ||
| #1096 | Fluent Support – Helpdesk & Customer Support Ticket System | 26 | 92 | 272 | 10k+ | Direct Query | ||
| #1097 | Folders – Unlimited Folders to Organize Media Library Folder, Pages, Posts, File Manager | 26 | 113 | 597 | 90k+ | Non-prefixed global variable | ||
| #1098 | FuseWP – WordPress User Sync to Email List & Marketing Automation (Mailchimp, Constant Contact, ActiveCampaign etc.) | 26 | 594 | 417 | 2k+ | Exception output is not escaped | ||
| #1099 | FV Antispam | 26 | 332 | 239 | 900 | Output is not escaped | ||
| #1100 | Translate WordPress – Google Language Translator | 26 | 200 | 317 | 100k+ | Non-prefixed global variable |