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 |
|---|---|---|---|---|---|---|---|---|
| #1401 | Themify – WooCommerce Product Filter | 29 | 643 | 145 | 20k+ | Output is not escaped | ||
| #1402 | Tilda-publishing | 29 | 219 | 78 | 700 | Output is not escaped | ||
| #1403 | Post Grid Gutenberg Blocks – PostX | 29 | 118 | 404 | 40k+ | Non-prefixed global variable | ||
| #1404 | Under Construction, Coming Soon & Maintenance Mode | 29 | 277 | 292 | 10k+ | Text Domain Mismatch | ||
| #1405 | Visualizer – Tables & Charts Manager with Built-in AI Generator | 29 | 348 | 331 | 20k+ | Output is not escaped | ||
| #1406 | weMail – Email Marketing, Newsletter Builder & Email Automations for WooCommerce | 29 | 276 | 68 | 10k+ | Missing direct file access protection | ||
| #1407 | Wenprise Alipay Gateway For WooCommerce | 29 | 113 | 68 | 700 | Exception output is not escaped | ||
| #1408 | Widget for Yelp Reviews | 29 | 147 | 158 | 2k+ | Output is not escaped | ||
| #1409 | Product Carousel Slider & Grid Ultimate for WooCommerce | 29 | 719 | 122 | 6k+ | Text Domain Mismatch | ||
| #1410 | Sofortueberweisung Gateway for Woocommerce | 29 | 104 | 71 | 700 | Output is not escaped | ||
| #1411 | Global Payments SecureSubmit Gateway | 29 | 199 | 443 | 500 | Non-prefixed class | ||
| #1412 | Woostify Sites Library | 29 | 229 | 198 | 20k+ | Text Domain Mismatch | ||
| #1413 | WP Popular Posts | 29 | 77 | 300 | 100k+ | Non-prefixed global variable | ||
| #1414 | WP Google Analytics Events – No-Code Custom Event Tracking for Google Analytics | 29 | 118 | 128 | 5k+ | Output is not escaped | ||
| #1415 | WP Magazine Modules Lite | 29 | 152 | 674 | 5k+ | Non-prefixed global variable | ||
| #1416 | WP Subscribe | 29 | 79 | 79 | 7k+ | Non-prefixed class | ||
| #1417 | WPComplete | 29 | 383 | 333 | 1k+ | Output is not escaped | ||
| #1418 | XML for Google Merchant Center | 29 | 52 | 312 | 3k+ | Non-prefixed global variable | ||
| #1419 | PublishPress Blocks – Block Controls, Block Visibility, Block Permissions | 30 | 239 | 417 | 20k+ | Non-prefixed global variable | ||
| #1420 | Aitasi Coming Soon | 30 | 516 | 186 | 1k+ | Output is not escaped | ||
| #1421 | All in One Addons For WPBakery Page Builder (formerly Visual Composer) | 30 | 1,084 | 150 | 1k+ | Output is not escaped | ||
| #1422 | Analytics Insights – Google Analytics Dashboard for WordPress | 30 | 241 | 170 | 10k+ | Unsafe printing function | ||
| #1423 | ApplyOnline – Application Form Builder and Manager | 30 | 345 | 244 | 2k+ | Output is not escaped | ||
| #1424 | Contact Form 7 Connector | 30 | 324 | 196 | 5k+ | Text Domain Mismatch | ||
| #1425 | Arile Extra | 30 | 537 | 570 | 10k+ | Non-prefixed global variable | ||
| #1426 | AutoWP – AI Content Writer & Rewriter | 30 | 548 | 370 | 1k+ | Text Domain Mismatch | ||
| #1427 | Private groups | 30 | 583 | 316 | 1k+ | Unsafe printing function | ||
| #1428 | Blockons – Gutenberg blocks for WordPress and WooCommerce websites | 30 | 69 | 205 | 700 | Non-prefixed global variable | ||
| #1429 | BrightEdge Autopilot | 30 | 108 | 31 | 600 | curl curl setopt | ||
| #1430 | Sliding Cart for WooCommerce by FunnelKit – Skip Cart & Reach WooCommerce Checkout Faster | 30 | 306 | 434 | 30k+ | Non-prefixed global variable | ||
| #1431 | Classic Addons – WPBakery Page Builder | 30 | 1,245 | 263 | 3k+ | Text Domain Mismatch | ||
| #1432 | Classified Listing Toolkits | 30 | 43 | 1,859 | 4k+ | Non-prefixed global variable | ||
| #1433 | Colete-Online | 30 | 776 | 346 | 600 | Text Domain Mismatch | ||
| #1434 | ContentBot AI Writer (AI Content) | 30 | 317 | 69 | 500 | rand rand | ||
| #1435 | Cryptocurrency Donation Box – Bitcoin & Crypto Donations | 30 | 334 | 284 | 500 | Output is not escaped | ||
| #1436 | Custom Search by BestWebSoft – WordPress Custom Search Plugin | 30 | 454 | 228 | 900 | Text Domain Mismatch | ||
| #1437 | DethemeKit for Elementor | 30 | 335 | 228 | 30k+ | Output is not escaped | ||
| #1438 | Easy Affiliate Links | 30 | 186 | 198 | 7k+ | Missing direct file access protection | ||
| #1439 | Easy Custom Auto Excerpt | 30 | 84 | 166 | 6k+ | Non-prefixed global variable | ||
| #1440 | EasyParcel Shipping– All-in-one Shipping Solution, Real-Time Shipping Rates | 30 | 37 | 608 | 600 | Non-prefixed global variable | ||
| #1441 | Element Invader – Template Kits for Elementor | 30 | 274 | 130 | 3k+ | Output is not escaped | ||
| #1442 | Email Templates Customizer and Designer for WordPress and WooCommerce | 30 | 250 | 349 | 20k+ | Non-prefixed global variable | ||
| #1443 | Epeken All Kurir for Woocommerce | 30 | 590 | 1,246 | 500 | Missing nonce verification | ||
| #1444 | Exclusive Addons for Elementor | 30 | 3,630 | 263 | 50k+ | Text Domain Mismatch | ||
| #1445 | Export Plugins and Templates | 30 | 143 | 33 | 1k+ | file system operations fread | ||
| #1446 | PiWeb Export Customers Users & Guest customer to CSV for WooCommerce | 30 | 173 | 75 | 1k+ | Text Domain Mismatch | ||
| #1447 | FormLift for Keap (Legacy) Web Forms | 30 | 162 | 315 | 400 | Request data is not unslashed | ||
| #1448 | Formzu WP | 30 | 167 | 163 | 3k+ | Text Domain Mismatch | ||
| #1449 | GlobalPayments Gateway Provider for WooCommerce | 30 | 640 | 172 | 1k+ | Text Domain Mismatch | ||
| #1450 | Kargo Takip, Kargo SMS, İlçe Mahalle Sözleşme by Hezarfen | 30 | 70 | 297 | 2k+ | Non-prefixed global variable |