WordPress 中的随机数指南
已发表: 2023-02-12安全性是所有网站所有者的重要话题。 虽然有很多策略可以保护您的网站安全,但不应忽视在 WordPress 中使用随机数。 这是使用最广泛的安全功能之一,可以防止一系列潜在问题。
随机数是一个“使用一次的数字”,它可以保护表单和 URL 免受恶意个人和其他滥用行为的侵害。 这些数字用作用户浏览器必须显示的标识值,以便获得执行敏感操作的权限。
在本文中,我们将了解随机数在 WordPress 中的工作原理以及如何创建它们。 然后我们将讨论如何验证随机数。 让我们开始吧!
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 网站!