zahardoc / z-nonce
以更面向对象的方式实现 WordPress nonce 功能
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: ~4.8|~5.1
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 测试。要运行它们,请按照以下步骤操作
- 转到库根目录:
cd /your/vendor/path/zahardoc/z-nonce
- 安装环境
tests/install.sh <db-name> <db-user> <db-pass> [db-host] [wp-version]
注意:使用具有创建新数据库权限的数据库用户。在此处不要指定现有数据库。 - 安装库依赖项:
composer update
- 运行测试:
vendor/bin/phpunit
许可证
此库在 MIT 许可证下发布,您可以在个人或商业网站上免费使用它。