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 |
|---|---|---|---|---|---|---|---|---|
| #801 | Product Attachment for WooCommerce | 24 | 1,233 | 1,777 | 7k+ | Non-prefixed global variable | ||
| #802 | NextMove Lite – Thank You Page for WooCommerce | 24 | 916 | 857 | 10k+ | Non-prefixed global variable | ||
| #803 | wallee | 24 | 331 | 220 | 400 | Exception output is not escaped | ||
| #804 | Country Based Payments for WooCommerce | 24 | 531 | 1,295 | 3k+ | Non-prefixed global variable | ||
| #805 | EU VAT Assistant for WooCommerce | 24 | 1,742 | 495 | 5k+ | Non Singular String Literal Domain | ||
| #806 | European VAT Compliance Assistant for WooCommerce | 24 | 515 | 317 | 3k+ | Output is not escaped | ||
| #807 | Store Exporter – Export WooCommerce Products, Orders, Subscriptions, Customers | 24 | 480 | 1,272 | 7k+ | Non-prefixed function | ||
| #808 | WPML Multilingual & Multicurrency for WooCommerce | 24 | 1,453 | 1,618 | 100k+ | SQL query is not prepared | ||
| #809 | WC Shop Sync – Square Payment Gateway and Product Synchronization for WooCommerce | 24 | 761 | 1,612 | 900 | Non-prefixed global variable | ||
| #810 | WordLift – AI powered SEO – Schema | 24 | 278 | 949 | 400 | Non-prefixed hook name | ||
| #811 | Yoast SEO – Advanced SEO with real-time guidance and built-in AI | 24 | 159 | 386 | 10m+ | Non-prefixed global variable | ||
| #812 | WP Admin Audit | 24 | 1,051 | 781 | 1k+ | error log print r | ||
| #813 | WP-Appbox | 24 | 418 | 390 | 2k+ | Missing Arg Domain | ||
| #814 | Auto Affiliate Links | 24 | 381 | 416 | 3k+ | Output is not escaped | ||
| #815 | WP Contact Slider – Contact Form Slider Widget | 24 | 1,355 | 2,589 | 9k+ | Non-prefixed global variable | ||
| #816 | WP Discourse | 24 | 103 | 114 | 1k+ | Nonce verification recommended | ||
| #817 | WP Fastest Cache – WordPress Cache Plugin | 24 | 541 | 753 | 1m+ | Unsafe printing function | ||
| #818 | Iptanus File Upload | 24 | 509 | 1,325 | 10k+ | Non-prefixed function | ||
| #819 | WP Frontend Delete Account | 24 | 537 | 1,378 | 4k+ | Non-prefixed global variable | ||
| #820 | WP Hotel Booking | 24 | 901 | 1,532 | 7k+ | Non-prefixed global variable | ||
| #821 | WP Job Portal – AI-Powered Recruitment System for Company or Job Board website | 24 | 78 | 1,158 | 8k+ | Missing Version | ||
| #822 | WP Layouts | 24 | 349 | 146 | 3k+ | Text Domain Mismatch | ||
| #823 | WP-Members Membership Plugin | 24 | 669 | 382 | 50k+ | Output is not escaped | ||
| #824 | WP Notification Bell | 24 | 736 | 1,591 | 700 | Non-prefixed global variable | ||
| #825 | پارسی دیت – Parsi Date | 24 | 106 | 291 | 100k+ | Non-prefixed hook name | ||
| #826 | WP Post Author – Author Box, Multiple Authors, Guest Authors & Custom Avatars | 24 | 861 | 1,573 | 10k+ | Non-prefixed global variable | ||
| #827 | WP Recipe Maker | 24 | 494 | 942 | 50k+ | Non-prefixed global variable | ||
| #828 | WP RSS Aggregator – RSS Import, Feed to Post, Autoblogging, AI Content | 24 | 1,777 | 394 | 40k+ | Text Domain Mismatch | ||
| #829 | WP School Calendar | 24 | 1,361 | 1,721 | 400 | Non-prefixed global variable | ||
| #830 | WP-Stateless – Google Cloud Storage | 24 | 1,036 | 482 | 4k+ | Non Singular String Literal Domain | ||
| #831 | WP Travel – Ultimate Travel Booking System, Tour Management Engine | 24 | 227 | 1,954 | 4k+ | Non-prefixed hook name | ||
| #832 | WP Travel Engine – Tour Booking Plugin – Tour Operator Software | 24 | 2,012 | 5,689 | 20k+ | Non-prefixed global variable | ||
| #833 | Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress | 24 | 2,581 | 2,109 | 100k+ | Output is not escaped | ||
| #834 | WP User Manager – User Profile Builder & Membership | 24 | 787 | 539 | 10k+ | Exception output is not escaped | ||
| #835 | WP Voting Contest Lite | 24 | 259 | 258 | 400 | Text Domain Mismatch | ||
| #836 | WPAdverts – Classifieds Plugin | 24 | 1,308 | 496 | 4k+ | Output is not escaped | ||
| #837 | WPeMatico RSS Feed Fetcher | 24 | 1,378 | 587 | 10k+ | Output is not escaped | ||
| #838 | WPGSI: Spreadsheet Integration | 24 | 784 | 1,587 | 2k+ | Non-prefixed global variable | ||
| #839 | WPIDE – File Manager & Code Editor | 24 | 612 | 1,399 | 40k+ | Non-prefixed global variable | ||
| #840 | WPSpeed – WordPress Speed, Cache & Performance Optimization (Core Web Vitals, PageSpeed 100) | 24 | 482 | 189 | 2k+ | Output is not escaped | ||
| #841 | WpStream – Live Streaming, Video on Demand, Pay Per View | 24 | 1,725 | 742 | 3k+ | Text Domain Mismatch | ||
| #842 | WP Travel Engine – Elementor Widgets | Create Travel Booking Website Using WordPress and Elementor | 24 | 5,907 | 2,136 | 10k+ | Text Domain Mismatch | ||
| #843 | xili-language | 24 | 1,501 | 523 | 600 | Output is not escaped | ||
| #844 | XT Ajax Add To Cart for WooCommerce | 24 | 985 | 1,665 | 1k+ | Non-prefixed global variable | ||
| #845 | XT Variation Swatches for WooCommerce | 24 | 1,033 | 1,809 | 500 | Non-prefixed global variable | ||
| #846 | YayCurrency – WooCommerce Multi-Currency Switcher | 24 | 373 | 623 | 8k+ | Text Domain Mismatch | ||
| #847 | YITH WooCommerce Gift Cards | 24 | 436 | 1,534 | 10k+ | Non-prefixed global variable | ||
| #848 | YITH WooCommerce Product Add-Ons | 24 | 460 | 2,069 | 20k+ | Non-prefixed global variable | ||
| #849 | YITH WooCommerce Subscription | 24 | 439 | 1,538 | 7k+ | Non-prefixed global variable | ||
| #850 | YITH WooCommerce Waitlist | 24 | 420 | 1,500 | 3k+ | Non-prefixed global variable |