WordPress限制插件文件直接访问

时间:2016-02-09 作者:Mehar

我正在开发WordPress插件,但在此之前,我已经检查了已经开发的少数插件的代码。我看到了一种常见的方法,可以通过以下行限制插件开发人员直接启动插件代码的位置

//  If accessed directly, abort
if ( ! defined( \'WPINC\' ) ) {
    die;
}
这在插件索引文件中。我的问题是,当我们安装插件时,这是第一个要执行的文件,所以它之前定义在哪里,并且不会中止对该文件的执行?

3 个回复
最合适的回答,由SO网友:Charles 整理而成

问题1

它在WordPress核心中定义。

这里有一个快速在线reference 或查看WordPress根目录中的以下文件以获取本地参考:wp-settings.php. 在该文件中(第18行附近)显示以下代码:

define( \'WPINC\', \'wp-includes\' );

<问题2

它的用途(也就是说,其目的是保护插件不被外部直接访问,preventing any unauthorized access 一些开发人员使用两种方法来实现此保护WPINC 和其他使用ABSPATH 如所示:

  • if (!defined(\'ABSPATH\')) exit; (或更换exit 具有die("No cheating!") 或其他文本文件if ( ! defined( \'WPINC\' ) ) die; (或使用exit以与上述相同的方式)两者的定义如下:

    • define( \'ABSPATH\', dirname(dirname(__FILE__)) . \'/\' );
    • define( \'WPINC\', \'wp-includes\' );
    dirname通用PHP)只需从完整路径返回目录
    wp-includes 这是不言而喻的。

    您可以自由决定使用哪个。我个人认为没有真正正确的方法,两者都有相同的目的。我只使用ABSPATH 但这完全取决于你个人的喜好
    只需记住将其直接添加到标题部分下方,或至少添加到插件顶部附近即可

SO网友:BillK

WPINC 在加载插件之前由WP定义;因此,它已经定义的事实表明插件是由WP而不是直接请求加载的。

SO网友:Razon Komar Pal

你也可以用这个。定义见Akismet Anti-Spam 插件。

// Make sure we don\'t expose any info if called directly
if ( !function_exists( \'add_action\' ) ) {
    echo \'Hi there!  I\\\'m just a plugin, not much I can do when called directly.\';
    exit;
}

相关推荐

wordpress admin security

我用不同的工具扫描我的网站,但它没有显示恶意脚本。但当我在管理仪表板中看到时,我在body标签下面看到了奇怪的方形符号。我试图检查管理索引文件,根索引文件,但什么都没有。有人放了这个脚本。而且,当我试图采取备份它不允许我采取。使用BackupFordPress插件。然而,所有其他的事情都在运行,但在管理方面仍然存在一些问题。如何检测和删除此项。