問題描述

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

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

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

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

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

最佳解決方案

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

  • 如果主題檔案是模板部分,

  • 並且它使用來自呼叫上下文 (父檔案) 的全域性變數,

  • register_globalson

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

… 攻擊者可以呼叫此檔案,使用 GETPOST 設定缺失的變數,並使主題檔案列印出來。然後有一個安全問題。

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

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

參考文獻

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