missing_direct_file_access_protection

Missing direct file access protection

A PHP file in the plugin can be loaded directly instead of through WordPress.

medium weight

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.

Affected Plugins

RankPluginScoreErrorsWarningsInstallsAddedUpdatedTop Issue
#1151Eventin – Event Calendar, Event Registration, Tickets & Booking (AI Powered)262,6522,09310k+Text Domain Mismatch
#1152WP Flashy Marketing Automation264321862k+Text Domain Mismatch
#1153HireZoot – Job Listings, Career Page & Recruitment Tool268062040k+Non-prefixed global variable
#1154WPCOM Member264326381k+Non Singular String Literal Domain
#1155WPFrank Companion262,3568651k+Text Domain Mismatch
#1156Accordions – Responsive Accordion & FAQ Plugin for WordPress275541581k+Text Domain Mismatch
#1157Addon Elements for Elementor (formerly Elementor Addon Elements)274,06510390k+Text Domain Mismatch
#1158Divi Torque Lite – Divi Modules for the Divi Builder & Theme2714627450k+Non-prefixed global variable
#1159Amazon Product in a Post Plugin27362416800Output is not escaped
#1160Apollo13 Framework Extensions2717127320k+Non-prefixed global variable
#1161Arconix FAQ275522016k+Text Domain Mismatch
#1162Lean Player – Video and Audio Player with Playlist for WordPress, Elementor and Gutenberg271,6154662k+Text Domain Mismatch
#1163BackUpWordPress2724527190k+Non-prefixed global variable
#1164Church Content – Sermons, Events and More271344104k+Non-prefixed function
#1165Divi Collage275161,183700Non-prefixed global variable
#1166Comment Link Remove and Other Comment Tools276911327k+Text Domain Mismatch
#1167Duplicate Post27447274300k+Unsafe printing function
#1168Polls CP27399500400Output is not escaped
#1169Custom Scrollbar271841912k+Output is not escaped
#1170Cyrlitera – Transliteration of Links and File Names2745320440k+Output is not escaped
#1171Gallery – Photo Albums Plugin276472522k+Output is not escaped
#1172EZ SQL Reports Shortcode Widget and DB Backup27165158500Output is not escaped
#1173CM Tooltip Glossary276111887k+Output is not escaped
#1174Events Calendar for GeoDirectory271,2624622k+Text Domain Mismatch
#1175Everest Backup – WordPress Cloud Backup, Migration, Restore & Cloning Plugin271221353k+Non-prefixed global variable
#1176Extra Product Options for WooCommerce275481,342600Non-prefixed global variable
#1177FG Joomla to WordPress272781017k+Unsafe printing function
#1178Foxtool All-in-One: Contact chat button, Custom login, Media optimize images271,6293607k+Unsafe printing function
#1179Frontend Post Submission Manager Lite – Frontend Posting WordPress Plugin272124972k+Non-prefixed global variable
#1180StylePress for Elementor27767283600Text Domain Mismatch
#1181Login for Google Apps271398510k+Exception output is not escaped
#1182Gravity Forms Directory27202457600Non-prefixed global variable
#1183Gravity Forms + Stripe27368210600Output is not escaped
#1184Hester Core2725310310k+Output is not escaped
#1185HM Multiple Roles275371,2871k+Non-prefixed global variable
#1186ImageRecycle pdf & image compression273292041k+Text Domain Mismatch
#1187Import Eventbrite Events271565753k+Non-prefixed global variable
#1188iQ Block Country2716424520k+Request data is not unslashed
#1189My Private Site – Make Your Whole Site Private, Force Login & Block Registration Spam2771332110k+Text Domain Mismatch
#1190Ray Enterprise Translation27876068k+Non-prefixed global variable
#1191Liza Widget For Spotify and Elementor276091,2871k+Non-prefixed global variable
#1192Loco Translate274512251m+Output is not escaped
#1193Login Security Solution272161544k+Output is not escaped
#1194LWS Optimize – All-in-One Speed Booster & Cache Tools273451810k+Non-prefixed global variable
#1195MakeCommerce for WooCommerce278264523k+Text Domain Mismatch
#1196Online Booking & Scheduling Calendar for WordPress by vcita274731611k+Output is not escaped
#1197Memberful – Membership Plugin273513361k+Text Domain Mismatch
#1198MLSImport – Download and synchronize real estate data from various MLS (Multiple Listing Services)271545515k+Non-prefixed global variable
#1199MW WP Form27334219200k+Output is not escaped
#1200Nextend Social Login and Register271,668243200k+Output is not escaped