问题描述

我是 PHP 的新手,但是我已经注意到,每个 PHP 文件都有一个安全性的代码片段,「开始时,如果没有以正确的方式访问」 脚本; 我的问题,child-theme functions.php 是否需要这样的东西,以确保安全?

PHP:

if ( ! defined( 'ABSPATH' ) ) {
    die( 'Direct Access Not Permitted' );
}

最佳解决思路

是否需要它?可能不是 (除了 this edge case,道具 @bravokeyl) 。你应该加吗?在我看来,是的

  1. 从编码/架构 POV,您声明 「这个文件需要 WordPress」 。

  2. 任何直接命中您的主题文件 (好奇的用户,机器人,”script kiddies” 等) 有可能泄漏一点信息 (很可能是文件系统) 和/或丢弃您的错误日志 (例如 Undefined function get_header in /bada/bing/bada/boom)

  3. 重申 1),这只是好的做法。

不过,我绝对讨厌这个:

die( 'Direct Access Not Permitted' );

IMO 应该简单地是:

if ( ! defined( 'ABSPATH' ) )
    exit;

“message” 没有任何意义。我是 exit 的粉丝。它传达一个事实,这是一个预期的可能的情况,在这种情况下,我只是想退出。我使用 die 进行”unexpected” 场景,如文件系统写入错误,数据库错误等。

次佳解决思路

大多数时候,没有必要在孩子主题中检查 defined( 'ABSPATH' )

第三种解决思路

不,functions.php 会在使用 WordPress API 时直接加载 PHP 生成 PHP 致命。

如果 functions.php 试图引导和加载 WordPress,那么是的,这是有必要的,但是如果你已经做了,那么一些事情已经非常错误,你需要从头开始

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。