WordPress 中的隨機數指南

已發表: 2023-02-12

安全性是所有網站所有者的重要話題。 雖然有很多策略可以保護您的網站安全,但不應忽視在 WordPress 中使用隨機數。 這是使用最廣泛的安全功能之一,可以防止一系列潛在問題。

隨機數是一個“使用一次的數字”,它可以保護表單和 URL 免受惡意個人和其他濫用行為的侵害。 這些數字用作用戶瀏覽器必須顯示的標識值,以便獲得執行敏感操作的許可。

在本文中,我們將了解隨機數在 WordPress 中的工作原理以及如何創建它們。 然後我們將討論如何驗證隨機數。 讓我們開始吧!

目錄
1. Nonces 在 WordPress 中如何工作?
2.創建一個隨機數
3.驗證一個隨機數
4.在 WP Engine 上構建安全的數字體驗

Nonces 如何在 WordPress 中工作?

隨機數的主要目的是保護您的 WordPress 網站免受惡意攻擊,例如跨站點請求偽造 (CSRF)。 這種類型的攻擊誘使用戶提交表單或單擊對您的網站有害的鏈接。 為了保護您的站點,WordPress 檢查隨機數值,並且僅當該值正確時才允許操作完成。

Nonces 已經是 WordPress 功能的一部分,您不需要將它們添加到 WordPress 生成的元素中。 這意味著添加和編輯帖子等關鍵操作會自動受到保護。

使用 nonce 時,它的默認壽命為 24 小時。 在那之後,nonce 不能再用於驗證為其定義的操作。 但是,網站管理員可以調整此生命週期。

nonce 防止的最常見的 CSRF 攻擊之一是惡意刪除用戶帳戶。 實施隨機數後,您的管理屏幕將生成用於刪除帳戶的 URL。 WordPress 會在該 URL 的末尾添加一個隨機數,看起來像這樣:

http://yourdomain.com/wp-admin/users.php?user=7&action=delete&_wpnonce=c214gd5315

如果攻擊者試圖用另一個值替換用戶 ID,例如“user=8”,則隨機數將無效。 刪除賬號將失敗,並顯示 403 Forbidden 錯誤頁面。 這使得惡意個人更難攻擊您網站的內容。

知道隨機數可以保護您的網站很重要,但您還需要了解如何實施它們。 雖然它們已經為默認的 WordPress 功能激活,但您可能需要為您的主題和插件手動實施它們。

創建隨機數

要創建隨機數,您需要向網站代碼添加一個函數。 所有隨機數創建代碼都放在functions.php文件中。 要打開此文件,請導航到 WordPress 儀表板中的外觀>主題編輯器。 在右側,單擊functions.php打開文件編輯器。

隨機數是為 URL、表單和操作單獨實現的。 要創建動作隨機數,請將以下代碼添加到此文件中:

 $nonce= wp_create_nonce('$action');

應調整代碼的“$action”部分以反映您希望隨機數驗證的操作。 一個例子是使用“刪除帖子”操作,它設置隨機數來驗證試圖刪除帖子的用戶。

要為 URL 創建隨機數,您可以使用以下代碼:

 $nonce= wp_nonce_url();

在括號內,您需要聲明函數的參數。 這是用於用戶操作的裸 URL 和字符串。 該字符串應特定於單個用戶,以提高 nonce 的安全性。

如果你想創建一個用於刪除用戶帳戶的隨機數,你可以使用這個片段:

 $nonce= wp_nonce_url($bare_url,'delete-user_'.$user->ID);

WordPress 會將隨機數的名稱默認為“_wpnonce”,但您可以通過將您選擇的名稱添加到上述字符串的末尾來更新它。

要為表單創建隨機數,請包含以下代碼:

 $nonce= wp_nonce_field();

在括號中,您需要為用戶操作添加一個字符串。 完成後,該函數會在表單中創建兩個隱藏字段,第一個包含隨機數哈希值。 第二個字段是當前 URL。 最終函數應如下所示:

 $nonce= wp_nonce_field('remove-comment_'.$comment_id);

此 nonce 函數還將具有默認的 WordPress nonce 名稱。 但是,如果您願意,這也是您可以修改的內容。

驗證隨機數

將隨機數添加到您的 WordPress 網站後,驗證它很重要。 這可確保 nonce 正常工作並確保您的網站安全。

不同的方法用於驗證 URL 和表單的隨機數。 要驗證 URL 隨機數,請將以下代碼添加到functions.php文件中:

 wp_verify_nonce($nonce, $action);

在此函數中,將“$nonce”調整為您要驗證的nonce的名稱,例如“delete-user”。 然後,將字符串“$action”更改為創建隨機數的具體時間。 當函數運行時,如果 nonce 無效,它將返回“false”。

另一方面,如果 nonce 有效,該函數將返回 1 或 2。這會告訴您 nonce 的年齡。 等於 1 的值表示隨機數是在過去 12 小時內創建的。 等於 2 的值表示隨機數是在 12 小時內創建的,但不到 24 小時前。

如果您在表單中添加了隨機數,則需要以下代碼來驗證它:

 check_admin_referer($action, $nonce);

如果 nonce 值有效,表單將按預期運行。 但是,如果 nonce 無效,用戶的瀏覽器會將他們重定向到 403 Forbidden 錯誤頁面。

在 WP Engine 上構建安全的數字體驗

安全對於穩定的網站至關重要,隨機數增加了一層額外的保護。 要實現它們,您需要做的就是將一些代碼添加到您的functions.php文件中。 使用的代碼因您要創建的隨機數類型和您要保護的操作而異。

雖然創建和實施隨機數可以增強站點安全性,但還需要考慮其他安全協議。 幸運的是,WP Engine 的安全 WordPress 託管平台為用戶和開發人員提供了一些最好的安全資源。 這讓您有更多時間專注於完善您的 WordPress 網站!