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 |
|---|---|---|---|---|---|---|---|---|
| #351 | DK PDF – WordPress PDF Generator | 23 | 744 | 335 | 3k+ | Exception output is not escaped | ||
| #352 | Dokan: AI Powered WooCommerce Multivendor Marketplace Solution – Build Your Own Amazon, eBay, Etsy | 23 | 170 | 821 | 40k+ | Non-prefixed global variable | ||
| #353 | Easy Digital Downloads – eCommerce Payments and Subscriptions made easy | 23 | 3,723 | 10,283 | 40k+ | Non-prefixed namespace | ||
| #354 | EazyDocs – AI Powered Knowledge Base, Wiki, Documentation & FAQ Builder | 23 | 355 | 1,541 | 2k+ | Non-prefixed global variable | ||
| #355 | Ecwid by Lightspeed Ecommerce Shopping Cart | 23 | 339 | 307 | 20k+ | Missing direct file access protection | ||
| #356 | ElementsReady Addons for Elementor | 23 | 231 | 666 | 3k+ | Non-prefixed global variable | ||
| #357 | Error Log Monitor | 23 | 694 | 1,414 | 20k+ | Non-prefixed global variable | ||
| #358 | Essential Real Estate | 23 | 529 | 5,060 | 8k+ | Non-prefixed global variable | ||
| #359 | EventON – Events Calendar | 23 | 2,585 | 1,021 | 6k+ | Text Domain Mismatch | ||
| #360 | Events Addon for Elementor | 23 | 779 | 1,339 | 7k+ | Non-prefixed global variable | ||
| #361 | Everest Forms – Contact Form, Payment Form, Quiz, Survey & Custom Form Builder with AI | 23 | 395 | 1,342 | 90k+ | Non-prefixed global variable | ||
| #362 | Spreadsheet Price Changer for WooCommerce and WP E-commerce – Light | 23 | 386 | 999 | 400 | Non-prefixed global variable | ||
| #363 | Ezoic | 23 | 432 | 516 | 10k+ | Output is not escaped | ||
| #364 | Fastcache by Host.it | 23 | 1,327 | 203 | 800 | Text Domain Mismatch | ||
| #365 | Featured Images in RSS for Mailchimp & More | 23 | 780 | 1,299 | 20k+ | Non-prefixed global variable | ||
| #366 | Feed Them Social – Social Media Feeds, Video, and Photo Galleries | 23 | 563 | 535 | 20k+ | Output is not escaped | ||
| #367 | Filr – Secure document library | 23 | 775 | 1,317 | 700 | Non-prefixed global variable | ||
| #368 | Finpose – Accounting for WooCommerce | 23 | 1,649 | 1,307 | 400 | Non-prefixed global variable | ||
| #369 | Image Photo Gallery Final Tiles Grid | 23 | 578 | 1,502 | 20k+ | Non-prefixed global variable | ||
| #370 | Five-Star Ratings Shortcode | 23 | 604 | 1,317 | 600 | Non-prefixed global variable | ||
| #371 | Flexmls® IDX Plugin | 23 | 1,268 | 957 | 1k+ | Output is not escaped | ||
| #372 | Form Maker by 10Web – Mobile-Friendly Drag & Drop Contact Form Builder | 23 | 4,746 | 1,279 | 30k+ | Non Singular String Literal Domain | ||
| #373 | Freshdesk (official) | 23 | 194 | 386 | 900 | Non-prefixed function | ||
| #374 | Front End PM | 23 | 978 | 2,264 | 5k+ | Non-prefixed global variable | ||
| #375 | Tracking and Consent Manager – WP Full Picture | 23 | 1,280 | 3,223 | 3k+ | Non-prefixed global variable | ||
| #376 | Futurio Extra | 23 | 787 | 205 | 20k+ | Text Domain Mismatch | ||
| #377 | FV Flowplayer Video Player | 23 | 1,311 | 1,454 | 20k+ | Output is not escaped | ||
| #378 | GAinWP Google Analytics Integration for WordPress | 23 | 525 | 176 | 8k+ | Output is not escaped | ||
| #379 | GamiPress – Gamification plugin to reward points, achievements, badges & ranks in WordPress | 23 | 3,589 | 2,760 | 10k+ | Output is not escaped | ||
| #380 | The GDPR Framework By Data443 | 23 | 1,287 | 517 | 10k+ | Short PHP open tag found | ||
| #381 | Anti-Malware Security and Brute-Force Firewall | 23 | 543 | 965 | 100k+ | Output is not escaped | ||
| #382 | Gmedia Photo Gallery | 23 | 350 | 1,121 | 7k+ | Non-prefixed global variable | ||
| #383 | Groovy Menu Plugin (Free) | 23 | 1,729 | 283 | 4k+ | Text Domain Mismatch | ||
| #384 | Groundhogg — CRM, Newsletters, and Marketing Automation | 23 | 136 | 921 | 2k+ | Non-prefixed global variable | ||
| #385 | Gutenberg | 23 | 605 | 327 | 300k+ | Missing direct file access protection | ||
| #386 | Interactive Content – H5P | 23 | 565 | 380 | 40k+ | Non Singular String Literal Domain | ||
| #387 | Happy Addons for Elementor | 23 | 573 | 444 | 400k+ | Output is not escaped | ||
| #388 | Houzez Property Feed | 23 | 1,464 | 1,585 | 1k+ | Text Domain Mismatch | ||
| #389 | Hunk Companion | 23 | 2,547 | 687 | 6k+ | Text Domain Mismatch | ||
| #390 | Ibtana – Ecommerce Product Addons | 23 | 1,547 | 1,718 | 6k+ | Non Singular String Literal Domain | ||
| #391 | Iks Menu – WordPress Category Accordion Menu & FAQs | 23 | 615 | 1,293 | 10k+ | Non-prefixed global variable | ||
| #392 | Image Carousel For Divi | 23 | 569 | 1,309 | 1k+ | Non-prefixed global variable | ||
| #393 | Import from YML | 23 | 97 | 308 | 400 | Non-prefixed global variable | ||
| #394 | RealHomes Memberships | 23 | 516 | 264 | 1k+ | Non Singular String Literal Domain | ||
| #395 | Payment forms, Buy now buttons, and Invoicing System | GetPaid | 23 | 389 | 1,266 | 5k+ | Non-prefixed global variable | ||
| #396 | IP Geo Block | 23 | 399 | 589 | 8k+ | Output is not escaped | ||
| #397 | Jeg Kit for Elementor – Powerful Addons for Elementor, Widgets & Templates for WordPress | 23 | 91 | 694 | 300k+ | Non-prefixed namespace | ||
| #398 | Joli FAQ SEO – WordPress FAQ Plugin | 23 | 1,083 | 1,526 | 700 | Non-prefixed global variable | ||
| #399 | Justified Gallery | 23 | 589 | 1,417 | 8k+ | Non-prefixed global variable | ||
| #400 | Kadence Blocks — Page Builder Toolkit for Gutenberg Editor | 23 | 55 | 2,127 | 600k+ | Non-prefixed global variable |