在wordpress中直接访问插件是什么危险的,为什么定义一个恒定的ABSPATH很重要


What is direct access to a plugin in wordpress dangerous and why is defining a constant ABSPATH important?

我正在开发我的第一个wordpress php插件。在其中,我的php文件中确实有一些非常敏感的信息。例如,我让我的插件在数据库中创建一堆表。

根据我遵循的教程,它提到通过将以下代码放在插件目录中每个文件的顶部来限制对插件 php 文件的直接访问:

defined ('ABSPATH') or die ("No Script Kiddies");

首先,我什至不确定 ABSPATH 变量指的是什么?

其次,如果此代码不包含在插件目录中每个.php文件的顶部,可能会造成什么危害?

感谢您帮助向我解释这一点。

我在Wordpress插件中看到过其他守卫。 ABSPATH 是 Wordpress 目录的绝对路径,如果 Wordpress 在包含插件代码或文件之前启动,则会进行初始化。

这是一种预防措施。

让我们想象一个名为"内务管理"的虚构插件。

插件文件:

house-keeping.php 
includes/delete-all-posts.php
删除所有帖子

文件仅包含删除所有帖子的代码,但通常在运行之前依赖于插件代码中的其他任务过程,例如内务管理中的函数调用.php:

function hk_delete_all_posts() {
    include 'includes/delete-all-posts.php'
}

想象一下,如果攻击者利用插件代码中的缺陷并自行运行删除所有帖子.php会有多痛苦。

(我意识到删除所有帖子.php需要其他Wordpress依赖项,但我们不必担心。

取决于你的代码。 由于WordPress代码文件暴露给所有人,因此您应该保护对它们的直接PHP访问。

常量检查是禁用直接脚本访问的最简单方法。