WordPress安全:使用Nonce保護主題和插件代碼
保護WordPress主題或插件代碼的安全至關重要,可以有效防止惡意用戶的攻擊。我們之前已經介紹過如何在WordPress中清理、轉義和驗證表單數據,以及如何使用VIP掃描器提高WordPress主題質量。今天,我們將探討Nonce(一次性使用數字)如何幫助保護WordPress主題和插件的安全。
關鍵要點
- WordPress Nonce,或“一次性使用數字”,是獨特的安全令牌,用於增強WordPress網站的安全性,方法是驗證用戶請求並防止惡意企圖。它們在防止跨站點請求偽造(CSRF)攻擊方面特別有用。
- Nonce的工作原理是為每個用戶會話、表單提交或AJAX請求生成一個唯一令牌。然後在處理請求時驗證此令牌,如果不匹配,則拒絕請求。這使得攻擊者難以預測或濫用令牌。
- 在WordPress中創建Nonce是通過使用WordPress函數
wp_create_nonce()
實現的,該函數接受一個表示要保護的操作的單個字符串參數。驗證Nonce是使用wp_verify_nonce()
函數完成的,該函數接受兩個參數:要驗證的Nonce和關聯的操作。 - Nonce可用於WordPress中的AJAX請求,從而增加了防止CSRF攻擊的額外安全層。 Nonce也是特定於用戶的,通過確保為一個用戶創建的Nonce對另一個用戶無效,提供了額外的安全層。
什麼是WordPress Nonce?
WordPress Nonce定義為:
……一個“一次性使用數字”,用於幫助保護URL和表單免受某些類型的濫用(惡意或其他)。 https://www.php.cn/link/c5af1dfde10402285102771ad64b3dac
雖然在WordPress中,Nonce從技術上講不是數字(它是由字母和數字組成的哈希值),但它確實有助於防止惡意用戶運行操作。
WordPress Nonce的工作分為兩部分:
- 創建Nonce(哈希值),通過表單或操作提交它,以及
- 驗證Nonce,然後接受表單數據或運行操作。
例如,當您在WordPress管理屏幕中刪除帖子時,您會注意到URL包含一個_wpnonce
參數:
https://www.php.cn/link/18175d262a01ebf04bc03e38e48e3ffc
刪除帖子的例程將檢查帖子542是否具有a03ac85772
的Nonce值,然後再刪除帖子。如果Nonce不存在或與預期值不匹配,則不會刪除帖子。
這可以防止惡意用戶潛在地刪除大量帖子。例如,以下內容將不起作用,因為Nonce屬於帖子ID 542:
https://www.php.cn/link/322d830da1130169fb4ca1c7543799d0 https://www.php.cn/link/dd4143061640d55fb312dd0ce8afa76e https://www.php.cn/link/9e0f9113b44003201076a9fade1b72d8
現在讓我們看看如何在插件中實現WordPress Nonce。
設置我們的WordPress插件
讓我們從一個具有自身設置屏幕的基本插件開始。設置屏幕有一個字段,可以提交並保存在WordPress選項表中。
在wp-content/plugins/implementing-wordpress-nonces/implementing-wordpress-nonces.php
中的新文件中輸入以下代碼:
// ... (插件代码,与原文相同) ...
通過WordPress管理>插件屏幕激活插件,您將看到一個新的Nonces菜單項:
單擊此項,您將進入設置屏幕,其中只有一個字段:
輸入任何值,單擊“保存”,如果一切正常,您將看到確認信息以及您剛剛輸入的值:
演示安全漏洞
將以下URL輸入到您的Web瀏覽器地址欄中(將域名替換為您安裝WordPress的位置):
https://www.php.cn/link/0e143c3bef0f7759c230664c4dc905f8
注意發生了什麼?該值被簡單地保存為abc,只需直接訪問URL並登錄到WordPress即可:
雖然我們可以在代碼中使用$_POST
代替$_REQUEST
(我們使用$_REQUEST
是為了更容易演示安全問題),但這無濟於事——惡意用戶仍然可以通過自己或誘導您單擊鏈接來讓您向此屏幕發送POST請求,從而導致選項值更改。
這被稱為跨站點請求偽造(或CSRF)。惡意網站、電子郵件、應用程序等會導致用戶的Web瀏覽器執行不需要的操作。
我們現在將創建和驗證WordPress Nonce,以防止這種攻擊成為可能。
使用Nonce保護我們的插件
如前所述,此過程分為兩個步驟:首先,我們需要創建一個將與我們的表單一起提交的Nonce。其次,我們需要在提交表單時驗證該Nonce。
要在我們的表單中創建Nonce字段,我們可以使用wp_nonce_field()
:
獲取或顯示Nonce隱藏表單字段……用於驗證表單請求的內容是否來自當前站點,而不是其他地方……
在我們的輸入按鈕上方添加以下代碼:
// ... (插件代码,与原文相同) ...
wp_nonce_field
接受四個參數——前兩個最重要:
-
$action
:這決定了我們正在運行的特定操作,並且應該唯一。最好用插件名稱作為操作的前綴,因為可能會有多個操作運行。在本例中,我們正在保存某些內容,因此我們使用了implementing_wordpress_nonces_save
-
$name
:這決定了此函數創建的隱藏字段的名稱。如上所述,我們已使用插件名稱作為其前綴,因此將其命名為implementing_wordpress_nonces_nonce
如果我們重新加載設置屏幕,更改我們的值並單擊“保存”,您會注意到該值仍然會更改。我們現在需要實現對提交的Nonce字段的檢查,使用wp_verify_nonce( $name, $action )
:
驗證Nonce是否正確且相對於指定操作未過期。該函數用於驗證當前請求中發送的Nonce,通常通過
$_REQUEST
PHP變量訪問。
將我們插件的admin_screen()
函數的“保存設置”部分替換為以下代碼:
wp_nonce_field( 'implementing_wordpress_nonces_save', 'implementing_wordpress_nonces_nonce' );
此代碼執行以下幾個操作:
- 首先,它檢查我們是否提交了某些內容。
- 然後,它檢查我們的Nonce字段是否存在,如果存在,則嘗試根據我們期望的操作驗證Nonce的值。
- 如果檢查通過,則更新選項。
- 如果檢查失敗,我們將拋出一個403錯誤,消息為“無效的Nonce指定”。
為了確保我們的Nonce正在創建和驗證,讓我們再次嘗試訪問我們的“惡意”直接URL:
https://www.php.cn/link/0e143c3bef0f7759c230664c4dc905f8.
如果我們的Nonce已實現並正在驗證,您將看到“無效的Nonce指定”通知:
...(剩餘部分與原文相同,只是對語言和表達方式進行細微調整,保持原意不變)...
以上是什麼是WordPress Nonces?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在 WordPress 網站上啟用評論功能,可以為訪客提供參與討論和分享反饋的平台。為此,請按照以下步驟操作:啟用評論:在儀錶盤中,導航至“設置”>“討論”,並選中“允許評論”複選框。創建評論表單:在編輯器中,單擊“添加塊”並蒐索“評論”塊,將其添加到內容中。自定義評論表單:通過設置標題、標籤、佔位符和按鈕文本來定制評論塊。保存更改:單擊“更新”以保存評論框並將其添加到頁面或文章中。

如何復制 WordPress 子站?步驟:在主站創建子站。在主站克隆子站。將克隆導入目標位置。更新域名(可選)。分開插件和主題。

在WordPress中創建自定義頁頭的步驟如下:編輯主題文件“header.php”。添加您的網站名稱和描述。創建導航菜單。添加搜索欄。保存更改並查看您的自定義頁頭。

WordPress 網站中啟用評論功能:1. 登錄管理面板,轉到 "設置"-"討論",勾選 "允許評論";2. 選擇顯示評論的位置;3. 自定義評論表單;4. 管理評論,批准、拒絕或刪除;5. 使用 <?php comments_template(); ?> 標籤顯示評論;6. 啟用嵌套評論;7. 調整評論外形;8. 使用插件和驗證碼防止垃圾評論;9. 鼓勵用戶使用 Gravatar 頭像;10. 創建評論指

可以通過 WordPress 安裝 FTP 插件,配置 FTP 連接,然後使用文件管理器上傳源碼。步驟包括:安裝 FTP 插件、配置連接、瀏覽上傳位置、上傳文件、檢查上傳成功。

如何復制 WordPress 代碼?從管理界面複製:登錄 WordPress 網站,導航到目標位置,選擇代碼並按 Ctrl C (Windows)/Command C (Mac) 複製代碼。從文件複製:使用 SSH 或 FTP 連接到服務器,導航到主題或插件文件,選擇代碼並按 Ctrl C (Windows)/Command C (Mac) 複製代碼。

WordPress 錯誤解決指南:500 內部服務器錯誤:禁用插件或檢查服務器錯誤日誌。 404 未找到頁面:檢查 permalink 並確保頁面鏈接正確。白屏死機:增加服務器 PHP 內存限制。數據庫連接錯誤:檢查數據庫服務器狀態和 WordPress 配置。其他技巧:啟用調試模式、檢查錯誤日誌和尋求支持。預防錯誤:定期更新 WordPress、僅安裝必要插件、定期備份網站和優化網站性能。

如何在 WordPress 中關閉評論?特定文章或頁面:在編輯器中取消選中“討論”下的“允許評論”。整個網站:在“設置”->“討論”中取消選中“允許發表評論”。使用插件:安裝 Disable Comments 等插件禁用評論。編輯主題文件:通過編輯 comments.php 文件移除評論表單。自定義代碼:使用 add_filter() 函數禁用評論。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver Mac版
視覺化網頁開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中