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 |
|---|---|---|---|---|---|---|---|---|
| #1151 | Eventin – Event Calendar, Event Registration, Tickets & Booking (AI Powered) | 26 | 2,652 | 2,093 | 10k+ | Text Domain Mismatch | ||
| #1152 | WP Flashy Marketing Automation | 26 | 432 | 186 | 2k+ | Text Domain Mismatch | ||
| #1153 | HireZoot – Job Listings, Career Page & Recruitment Tool | 26 | 80 | 620 | 40k+ | Non-prefixed global variable | ||
| #1154 | WPCOM Member | 26 | 432 | 638 | 1k+ | Non Singular String Literal Domain | ||
| #1155 | WPFrank Companion | 26 | 2,356 | 865 | 1k+ | Text Domain Mismatch | ||
| #1156 | Accordions – Responsive Accordion & FAQ Plugin for WordPress | 27 | 554 | 158 | 1k+ | Text Domain Mismatch | ||
| #1157 | Addon Elements for Elementor (formerly Elementor Addon Elements) | 27 | 4,065 | 103 | 90k+ | Text Domain Mismatch | ||
| #1158 | Divi Torque Lite – Divi Modules for the Divi Builder & Theme | 27 | 146 | 274 | 50k+ | Non-prefixed global variable | ||
| #1159 | Amazon Product in a Post Plugin | 27 | 362 | 416 | 800 | Output is not escaped | ||
| #1160 | Apollo13 Framework Extensions | 27 | 171 | 273 | 20k+ | Non-prefixed global variable | ||
| #1161 | Arconix FAQ | 27 | 552 | 201 | 6k+ | Text Domain Mismatch | ||
| #1162 | Lean Player – Video and Audio Player with Playlist for WordPress, Elementor and Gutenberg | 27 | 1,615 | 466 | 2k+ | Text Domain Mismatch | ||
| #1163 | BackUpWordPress | 27 | 245 | 271 | 90k+ | Non-prefixed global variable | ||
| #1164 | Church Content – Sermons, Events and More | 27 | 134 | 410 | 4k+ | Non-prefixed function | ||
| #1165 | Divi Collage | 27 | 516 | 1,183 | 700 | Non-prefixed global variable | ||
| #1166 | Comment Link Remove and Other Comment Tools | 27 | 691 | 132 | 7k+ | Text Domain Mismatch | ||
| #1167 | Duplicate Post | 27 | 447 | 274 | 300k+ | Unsafe printing function | ||
| #1168 | Polls CP | 27 | 399 | 500 | 400 | Output is not escaped | ||
| #1169 | Custom Scrollbar | 27 | 184 | 191 | 2k+ | Output is not escaped | ||
| #1170 | Cyrlitera – Transliteration of Links and File Names | 27 | 453 | 204 | 40k+ | Output is not escaped | ||
| #1171 | Gallery – Photo Albums Plugin | 27 | 647 | 252 | 2k+ | Output is not escaped | ||
| #1172 | EZ SQL Reports Shortcode Widget and DB Backup | 27 | 165 | 158 | 500 | Output is not escaped | ||
| #1173 | CM Tooltip Glossary | 27 | 611 | 188 | 7k+ | Output is not escaped | ||
| #1174 | Events Calendar for GeoDirectory | 27 | 1,262 | 462 | 2k+ | Text Domain Mismatch | ||
| #1175 | Everest Backup – WordPress Cloud Backup, Migration, Restore & Cloning Plugin | 27 | 122 | 135 | 3k+ | Non-prefixed global variable | ||
| #1176 | Extra Product Options for WooCommerce | 27 | 548 | 1,342 | 600 | Non-prefixed global variable | ||
| #1177 | FG Joomla to WordPress | 27 | 278 | 101 | 7k+ | Unsafe printing function | ||
| #1178 | Foxtool All-in-One: Contact chat button, Custom login, Media optimize images | 27 | 1,629 | 360 | 7k+ | Unsafe printing function | ||
| #1179 | Frontend Post Submission Manager Lite – Frontend Posting WordPress Plugin | 27 | 212 | 497 | 2k+ | Non-prefixed global variable | ||
| #1180 | StylePress for Elementor | 27 | 767 | 283 | 600 | Text Domain Mismatch | ||
| #1181 | Login for Google Apps | 27 | 139 | 85 | 10k+ | Exception output is not escaped | ||
| #1182 | Gravity Forms Directory | 27 | 202 | 457 | 600 | Non-prefixed global variable | ||
| #1183 | Gravity Forms + Stripe | 27 | 368 | 210 | 600 | Output is not escaped | ||
| #1184 | Hester Core | 27 | 253 | 103 | 10k+ | Output is not escaped | ||
| #1185 | HM Multiple Roles | 27 | 537 | 1,287 | 1k+ | Non-prefixed global variable | ||
| #1186 | ImageRecycle pdf & image compression | 27 | 329 | 204 | 1k+ | Text Domain Mismatch | ||
| #1187 | Import Eventbrite Events | 27 | 156 | 575 | 3k+ | Non-prefixed global variable | ||
| #1188 | iQ Block Country | 27 | 164 | 245 | 20k+ | Request data is not unslashed | ||
| #1189 | My Private Site – Make Your Whole Site Private, Force Login & Block Registration Spam | 27 | 713 | 321 | 10k+ | Text Domain Mismatch | ||
| #1190 | Ray Enterprise Translation | 27 | 87 | 606 | 8k+ | Non-prefixed global variable | ||
| #1191 | Liza Widget For Spotify and Elementor | 27 | 609 | 1,287 | 1k+ | Non-prefixed global variable | ||
| #1192 | Loco Translate | 27 | 451 | 225 | 1m+ | Output is not escaped | ||
| #1193 | Login Security Solution | 27 | 216 | 154 | 4k+ | Output is not escaped | ||
| #1194 | LWS Optimize – All-in-One Speed Booster & Cache Tools | 27 | 34 | 518 | 10k+ | Non-prefixed global variable | ||
| #1195 | MakeCommerce for WooCommerce | 27 | 826 | 452 | 3k+ | Text Domain Mismatch | ||
| #1196 | Online Booking & Scheduling Calendar for WordPress by vcita | 27 | 473 | 161 | 1k+ | Output is not escaped | ||
| #1197 | Memberful – Membership Plugin | 27 | 351 | 336 | 1k+ | Text Domain Mismatch | ||
| #1198 | MLSImport – Download and synchronize real estate data from various MLS (Multiple Listing Services) | 27 | 154 | 551 | 5k+ | Non-prefixed global variable | ||
| #1199 | MW WP Form | 27 | 334 | 219 | 200k+ | Output is not escaped | ||
| #1200 | Nextend Social Login and Register | 27 | 1,668 | 243 | 200k+ | Output is not escaped |