Twórcy wtyczek często chronią swoje wtyczki przed bezpośrednim dostępem. Widziałem dwa sposoby, aby to zrobić:
if ( ! defined( 'WPINC' ) ) die;
i
if ( ! defined( 'ABSPATH' ) ) exit;
Jakie są różnice między WPINC a ABSPATH? Który jest „właściwym” sposobem na zrobienie tego?
plugins
php
plugin-development
Daniel
źródło
źródło
if ( ! defined( 'ABSPATH' ) ) exit;
... ale, być może, uważają, że zakres tego fragmentu jest upewnić się, że WordPress jest załadowany „WPINC” jest lepszy, bo jest bardziej wordpressfull Staring „WP”.if ( ! defined( 'WPINC' ) ) die;
iif ( ! defined( 'ABSPATH' ) ) exit;
dodaj dodatkową warstwę bezpieczeństwa, uniemożliwiając bezpośredni dostęp do pliku wtyczki.ABSPATH
jest stałą PHP zdefiniowaną przez WordPress w jej rdzeniu.Jeśli dostęp do pliku wtyczki jest uzyskiwany spoza WordPress, stała
ABSPATH
lubWPINC
nie zostanie zdefiniowana, więc wychodzi z kodu wtyczki, zapobiegając nieautoryzowanemu dostępowi do twojego kodu.ABSPATH
iWPINC
są zdefiniowane w rdzeniu WordPress jako:Oba są używane w tym samym celu.
źródło
Możesz się sprawdzić. Wystarczy spojrzeć
wp-load.php
na lustro WordPress na GitHub.Nawet szybki rzut oka pokaże, że aktualnie wybrana odpowiedź nie jest już poprawna w zakresie
ABSPATH
definicji. A jeśli porównasz różne tagi w GitHub, zobaczysz, żeABSPATH
definicja zmienia się z czasem.Biorąc pod uwagę, że są one używane dla bezpieczeństwa, wybrałbym
ABSPATH
. UzasadnienieABSPATH
jest nie tylko zdefiniowane jako pierwsze w bootstraperze WP, aleWPINC
również w tym samym pliku jest zdefiniowane warunkowo, w wyniku czego istnieje większe prawdopodobieństwo regresji w przyszłości.Ponadto, chociaż nie zostało to wyraźnie zadane, podałeś przykłady, używając zarówno
die
iexit
. Wedługdevdocs.io
, która opiera się na oficjalnej dokumentacji API,die
jest równoważnaexit
, więc możesz wybrać jedno z dwóch i to nie robi różnicy.Zarówno
die
iexit
przyjąć argumenty, więc można rozważyć użycie ich do produkcji kilka przydatnych informacji, takich jak informacje o wersji zaszyfrowanej zmiennej lub kontaktów na Abend, lub przekazać kod wyjścia, takich jak0
lub-1
do dalszego przetwarzania.Warto również zauważyć, że
wp_die
to też jest rzecz. Nie należy mylić ich z wbudowanymi PHP, ale komplementuje je do wykorzystania w wyprowadzaniu HTML oprócz zwykłego tekstu i jest obecnie używany swobodnie w całym rdzeniu WordPress. Dowiedz się więcej owp_die
na WordPress.org.źródło