问题描述

我经常在主题中遇到以下片段:

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

这是一个主题中的一些 (所有?)PHP 文件的开头,它应该是阻止恶意来源直接访问该文件。

我看到这不包括在二十或十一,我从来没有看到它在官方 WordPress 文档中推荐。对我而言似乎是一个好主意,但是我也不太了解安全性来判断它,并且与 Google 无法找到很多。

这是我在自定义主题中应该有的东西吗?如果是这样,应该是在所有的 PHP 文件还是只是一些?

最佳解决方案

通常,你不需要它。但… 至少有一个边案例:

  • 如果主题文件是模板部分,

  • 并且它使用来自调用上下文 (父文件) 的全局变量,

  • register_globalson

  • 它只是使用这些变量没有任何安全检查…

… 攻击者可以调用此文件,使用 GETPOST 设置缺失的变量,并使主题文件打印出来。然后有一个安全问题。

所以… 最好的选择不是像你的例子那样的上下文检查,而是很好的代码:避免使用全局变量,在打印出来之前检查它们的内容。

在某些情况下,当我认为其他人会使用我的代码并改变它而不考虑安全性时,我添加了上下文检查。没有伤害

参考文献

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