簡體   English   中英

防止直接訪問Wordpress插件中的php文件

[英]Prevent direct access to php files in a Wordpress plugin

我正在構建僅應在我的網站上使用的Wordpress插件。 我將其放置在wp-content / plugins / myPlugin下的常規位置。 在該目錄中,我放置了一個index.php來防止目錄列表,並通過將請求發送到404頁的wordpress來隱藏存在名為myPlugin的目錄的事實。 編碼:

include ('../../../wp-load.php');
header("HTTP/1.0 404 Not Found - Archive Empty");
$wp_query->set_404();
require TEMPLATEPATH . '/404.php';
exit;

但是,這並不妨礙任何人訪問myurl.com/wp-content/plugins/myPlugin/myPlugin.php上的我的php文件。 如何在插件中為此和其他PHP文件實現相同的404? 重要的是要注意,這些文件應該可以通過Wordpress admin訪問。 也許當我通過myurl.com/wp-admin/admin.php?page=myPlugin/myPlugin.php訪問php文件時,WordPress管理員設置了一些全局變量?

添加到Sammitch的答案中,這就是您可以用於WordPress的方式:

defined('ABSPATH') or die("Your message here");

ABSPATHwp-load.php定義:

/** Define ABSPATH as this file's directory */
define( 'ABSPATH', dirname(__FILE__) . '/' );

許多應用程序在其全局頭文件中執行以下操作:

define('_JEXEC', TRUE); // Joomla, btw

這樣,您就可以在不想在應用程序上下文之外執行的文件中執行以下操作:

if( !defined('_JEXEC') ) { die('unatuhorized'); }

但是,不幸的是,Wordpress似乎並沒有完全做到這一點,但是它確實定義了諸如WP_USE_THEMES之類的其他常量的度量標准,您可以根據自己的目的進行側面WP_USE_THEMES

您也可以使用get_defined_constants()列出插件運行時定義的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM