问题描述
我经常在主题中遇到以下片段:
if ( ! defined('ABSPATH')) exit('restricted access');
这是一个主题中的一些 (所有?)PHP 文件的开头,它应该是阻止恶意来源直接访问该文件。
我看到这不包括在二十或十一,我从来没有看到它在官方 WordPress 文档中推荐。对我而言似乎是一个好主意,但是我也不太了解安全性来判断它,并且与 Google 无法找到很多。
这是我在自定义主题中应该有的东西吗?如果是这样,应该是在所有的 PHP 文件还是只是一些?
最佳解决方案
通常,你不需要它。但… 至少有一个边案例:
-
如果主题文件是模板部分,
-
并且它使用来自调用上下文 (父文件) 的全局变量,
-
和 register_globals 是
on
, -
它只是使用这些变量没有任何安全检查…
… 攻击者可以调用此文件,使用 GET
或 POST
设置缺失的变量,并使主题文件打印出来。然后有一个安全问题。
所以… 最好的选择不是像你的例子那样的上下文检查,而是很好的代码:避免使用全局变量,在打印出来之前检查它们的内容。
在某些情况下,当我认为其他人会使用我的代码并改变它而不考虑安全性时,我添加了上下文检查。没有伤害
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。