問題描述

我經常在主題中遇到以下片段:

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

這是一個主題中的一些 (所有?)PHP 文件的開頭,它應該是阻止惡意來源直接訪問該文件。

我看到這不包括在二十或十一,我從來沒有看到它在官方 WordPress 文檔中推薦。對我而言似乎是一個好主意,但是我也不太瞭解安全性來判斷它,並且與 Google 無法找到很多。

這是我在自定義主題中應該有的東西嗎?如果是這樣,應該是在所有的 PHP 文件還是隻是一些?

最佳解決方案

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

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

  • 並且它使用來自調用上下文 (父文件) 的全局變量,

  • register_globalson

  • 它只是使用這些變量沒有任何安全檢查…

… 攻擊者可以調用此文件,使用 GETPOST 設置缺失的變量,並使主題文件打印出來。然後有一個安全問題。

所以… 最好的選擇不是像你的例子那樣的上下文檢查,而是很好的代碼:避免使用全局變量,在打印出來之前檢查它們的內容。

在某些情況下,當我認為其他人會使用我的代碼並改變它而不考慮安全性時,我添加了上下文檢查。沒有傷害

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。