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
#1451Invisible reCaptcha for WordPress309018580k+Input is not sanitized
#1452Jetpack Protect30657217100k+Text Domain Mismatch
#1453core plugin for kitestudio themes30244415500Nonce verification recommended
#1454Laposta Signup Embed3088191k+Exception output is not escaped
#1455Mailrelay303181701k+Text Domain Mismatch
#1456Midtrans-WooCommerce301121325k+Non-prefixed global variable
#1457Move Addons for Elementor303,919912k+Text Domain Mismatch
#1458Naver webmaster syndication v23089129500Output is not escaped
#1459Novelist304751581k+Output is not escaped
#1460OoohBoi Steroids for Elementor302,05910040k+Text Domain Mismatch
#1461Operation Demo Importer – Demo Importer For WPoperation Themes302451041k+Text Domain Mismatch
#1462گرویتی فرم فارسی3020515720k+Text Domain Mismatch
#1463PitchPrint3076163400Input is not sanitized
#1464Popularis Extra302371417k+Output is not escaped
#1465Popup Builder – Create highly converting, mobile friendly marketing popups.3026722200k+Non-prefixed global variable
#1466Post Grid, Slider & Carousel Ultimate – with Shortcode, Gutenberg Block & Elementor Widget302311021k+Non Singular String Literal Domain
#1467Sync Master Sheet – Product Sync with Google Sheet for WooCommerce30136300400Non-prefixed global variable
#1468Pubjet | پاب‌جت30911721k+Output is not escaped
#1469Real Cookie Banner: GDPR & ePrivacy Cookie Consent309496100k+Database parameter is not escaped
#1470Realbig For WordPress30365911k+Non-prefixed global variable
#1471Rublon Multi-Factor Authentication (MFA)30216160400Output is not escaped
#1472Rank Math SEO – AI SEO Tools to Dominate SEO Rankings30453744m+Non-prefixed global variable
#1473StoreBuild – Online Store Builder for WooCommerce30120211600Non-prefixed global variable
#1474Sina Extension for Elementor303,69116040k+Text Domain Mismatch
#1475SmartCrawl SEO checker, analyzer & optimizer303471,30720k+Non-prefixed global variable
#1476SMTP for Amazon SES – YaySMTP301971223k+Exception output is not escaped
#1477Stackable – Page Builder Gutenberg Blocks3048287100k+Non Singular String Literal Domain
#1478Star Addons for Elementor302362551k+Non-prefixed global variable
#1479Taboola30891471k+Output is not escaped
#1480Tabs Responsive – With WooCommerce Product Tabs Extension3057525520k+Non Singular String Literal Domain
#1481Themify Portfolio Post3021410230k+Text Domain Mismatch
#1482Travel Booking Toolkit302453243k+Non-prefixed global variable
#1483Travelers' Map303111551k+Output is not escaped
#1484Tutor LMS Divi Modules304207221k+Non-prefixed global variable
#1485Urvanov Syntax Highlighter30221873k+Output is not escaped
#1486User Access Manager3039317110k+Output is not escaped
#1487User Avatar – Reloaded30352171900Text Domain Mismatch
#1488User Role by BestWebSoft – Add and Customize Roles and Capabilities in WordPress304862783k+Text Domain Mismatch
#1489UX Flat305392031k+Missing Arg Domain
#1490Waitlist Woocommerce ( Back in stock notifier )302723114k+Output is not escaped
#1491Checkout with Cash App on WooCommerce301223082k+Non-prefixed global variable
#1492Dropify301322542k+Nonce verification recommended
#1493Custom Post Types and Custom Fields creator – WCK301,29913710k+Text Domain Mismatch
#1494Webling30147313500Input is not validated
#1495Widget Manager Light3023383600Text Domain Mismatch
#1496Widgetize Pages Light301451043k+Output is not escaped
#1497WonderPush – Web Push Notifications – WooCommerce Abandoned Cart – GDPR30152192600Missing direct file access protection
#1498Delivery & Pickup Date Time for WooCommerce304394355k+Non-prefixed global variable
#1499FOX – Currency Switcher Professional for WooCommerce302111,02250k+Non-prefixed global variable
#1500Mercado Pago payments for WooCommerce3061963100k+Short PHP open tag found