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
#2001Tab Ultimate341071381k+Output is not escaped
#2002TaxJar – Sales Tax Automation for WooCommerce342361705k+Text Domain Mismatch
#2003Testimonial Slider344482623k+Unsafe printing function
#2004Easy Mega Menu for WordPress – ThemeHunk344802561k+Text Domain Mismatch
#2005Throws SPAM Away3432712310k+Missing Arg Domain
#2006Tidio – Live Chat & AI Chatbots34521980k+curl curl setopt
#2007Travel Agency Companion – Create Tour & Travel Website Using WP Travel Engine341282114k+Non-prefixed global variable
#2008Tools for Twitter34135871k+Output is not escaped
#2009Ultimate 410 Gone Status Code34136657k+Output is not escaped
#2010Ultra Companion – Companion plugin for WPoperation Themes34731161k+Missing direct file access protection
#2011Visual Form Builder348232920k+Direct Query
#2012Abandoned Cart Reports For WooCommerce341331631k+Output is not escaped
#2013DPD SK for WooCommerce34130165700Output is not escaped
#2014Weaver Xtreme Theme Support341,625439k+Text Domain Mismatch
#2015PagHiper Boleto e PIX para WooCommerce34291381k+Missing nonce verification
#2016Checkout Field Editor (Checkout Page Manager) for WooCommerce347062322k+Text Domain Mismatch
#2017MailerLite – WooCommerce integration34653630k+Output is not escaped
#2018Simple Discount Rules for Woocommerce341752144k+Nonce verification recommended
#2019Digital Signature Add-on for WooCommerce34165761k+Text Domain Mismatch
#2020Woopra Analytics Plugin3411453900Output is not escaped
#2021WP Custom Admin Interface3426311830k+Unsafe printing function
#2022Wp Default Sender Email by IT Pixelz3468225500Output is not escaped
#2023WP Dummy Content Generator34931306k+Output is not escaped
#2024WP Dynamic Keywords Injector34442051k+Nonce verification recommended
#2025WP Forms Signature Contract Add-On3412835900Text Domain Mismatch
#2026Email Template Designer – WP HTML Mail34628020k+badly named files
#2027WP LinkedIn Auto Publish34165568k+Output is not escaped
#2028WP Mail Logging3476258300k+Nonce verification recommended
#2029WP Maintenance344021760k+Non-prefixed global variable
#2030LightStart – Maintenance Mode, Coming Soon and Landing Page Builder3442312400k+Request data is not unslashed
#2031WP Notes Widget3421736700Output is not escaped
#2032WP Popup Builder – Popup Forms and Marketing Lead Generation343571433k+Text Domain Mismatch
#2033WP Random Post Thumbnails34420261k+Text Domain Mismatch
#2034Thumbnail Slider With Lightbox34244141700Output is not escaped
#2035Thumbnail carousel slider342771432k+Output is not escaped
#2036WP-SCSS342691340k+Exception output is not escaped
#2037WP SendFox342961181k+Text Domain Mismatch
#2038WP Subscription Forms – Subscription Form Plugin for WordPress34131220400Non-prefixed global variable
#2039WP Ultimate Post Grid34114744k+Missing direct file access protection
#2040Vertical Image Slider342641381k+Output is not escaped
#2041Live Visitor Counter341081144k+Interpolated SQL is not prepared
#2042Wp Favs – Plugin Manager342381533k+Text Domain Mismatch
#2043WPLMS MyCred AddOn3438373800Text Domain Mismatch
#2044Xml Sitemap Generator347247400SQL query is not prepared
#2045YourChannel: Everything you want in a YouTube plugin.3426211510k+Text Domain Mismatch
#2046Embed Plus for YouTube Gallery, Livestream and Lazy Loading with Facades34571195100k+Output is not escaped
#2047Zero Spam for WordPress347939320k+Non-prefixed global variable
#2048zipMoney(Zip Co) Payments Plugin for WooCommerce34147702k+Text Domain Mismatch
#2049Abandoned Checkout Recovery & Order Notifications for WooCommerce3510877800Text Domain Mismatch
#2050Absolute Addons For Elementor3586286400Non-prefixed global variable