zahardoc/z-nonce

以更面向对象的方式实现 WordPress nonce 功能

1.1.0 2017-07-02 20:26 UTC

This package is auto-updated.

Last update: 2024-09-26 21:55:39 UTC


README

简介

ZNonce 库以更面向对象的方式提供 WordPress nonce 功能。nonce 用于帮助保护 URL 和表单免受某些类型的滥用,无论是恶意还是其他原因。请参阅 https://codex.wordpress.org/WordPress_Nonces 获取详细信息。

安装

推荐使用 composer 安装 ZNonce

composer require zahardoc/z-nonce

如何使用它

安装后,请确保在使用 ZNonce 之前,您的代码中任何地方都包含了 composer 的 autoload.php 文件

require_once 'path/to/folder/vendor/autoload.php';

然后,您可以使用 ZNonce::init() 函数在代码的任何位置获取 ZNonce

$znonce = Zahardoc\ZNonce\ZNonce::init();

然后,您可以创建或验证 nonce。

请注意,nonce 有一个有效期,在此期间它们会过期。默认情况下为 24 小时,但您可以通过 set_nonce_life() 方法修改它。只需调用它并指定您希望 nonce 存活的时间(秒)。例如:将 nonce 时间设置为 1 分钟

$znonce->set_nonce_life(60);

此外,您始终可以使用 get_nonce_life() 检查 nonce 的有效期

$life = $znonce->get_nonce_life();

创建 nonce

创建 nonce 时,尽量使用尽可能具体的行为。例如,如果您正在处理帖子,请将帖子 ID 添加到您的行为中。有 3 种使用创建 nonce 功能的方式

将 nonce 添加到 URL

要将 nonce 添加到 URL,请调用 nonce_url() 方法,指定裸 URL 和表示行为的字符串

$action_url = $znonce->nonce_url( $bare_url, 'your_action_'.$post_id );

将 nonce 添加到表单

要将 nonce 添加到表单,请使用 nonce_field()

$znonce->nonce_field( 'your_action_'.$post_id ); 

它将创建 2 个带有 nonce 和 referer 值的隐藏字段,您可以在以后验证它们。

以其他方式创建 nonce

如果您需要 nonce 本身以在其他方式使用它,请调用 create_nonce() 方法

$nonce = $znonce->create_nonce( 'your-action_'.$post_id );

验证 nonce

如果 nonce 有效,所有验证方法返回 1 或 2,具体取决于它创建的时间有多久。如果它少于有效期的一半,则方法返回 1,否则返回 2。

验证来自管理屏幕的 nonce

要验证来自管理屏幕的 nonce,请调用 check_admin_referer() 并指定表示行为的字符串。

$znonce->check_admin_referer( 'your_action' );

此调用检查 nonce 和 referrer,如果检查失败,则终止脚本执行并返回 "403 禁止" 响应和错误消息。

验证 AJAX 请求中的 nonce

要验证 AJAX 请求中的 nonce,请调用 check_ajax_referer() 方法并指定表示行为的字符串。

$znonce->check_ajax_referer( 'your_action' );

此调用检查 nonce(但不检查 referrer),如果检查失败,则终止脚本执行。

验证在其他上下文中传递的 nonce

如果您只想验证 nonce 然后执行一些自定义操作,请使用 verify_nonce() 方法

$result = $znonce->verify_nonce( $_REQUEST['your_nonce'], 'your-action_'.$post_id );

测试

ZNonce 随带 phpunit 测试。要运行它们,请按照以下步骤操作

  1. 转到库根目录: cd /your/vendor/path/zahardoc/z-nonce
  2. 安装环境 tests/install.sh <db-name> <db-user> <db-pass> [db-host] [wp-version] 注意:使用具有创建新数据库权限的数据库用户。在此处不要指定现有数据库。
  3. 安装库依赖项: composer update
  4. 运行测试: vendor/bin/phpunit

许可证

此库在 MIT 许可证下发布,您可以在个人或商业网站上免费使用它。