riccardooliva91 / wp-customize-nonce
一款WordPress插件,允许您自定义nonce生成和验证,紧贴核心中定义的原有结构。
Requires
- php: >=7.1
Requires (Dev)
- brain/monkey: ^2.6
- phpunit/phpunit: ^9.4
This package is auto-updated.
Last update: 2024-09-29 06:21:27 UTC
README
一款WordPress插件,允许您自定义nonce生成和验证,紧贴核心中定义的原有结构。
此插件替换了可插拔函数 wp_create_nonce
和 wp_verify_nonce
,并且可以通过定义常量进行完全配置。欲了解更多详情,请阅读。
要求
- PHP: >= 7.1;
- WP: >= 4.0.0
安装
目前,该插件不可在官方WP插件存储库中找到。在当前阶段,首选的安装方法是 通过 Composer
composer require riccardooliva91/wp-customize-nonce
如果您正在使用某些WP模板(如 Bedrock),应在根目录中运行此命令,自动加载器将完成剩余工作。如果您正在手动克隆此存储库,请确保
在插件文件夹中让Composer为您生成自动加载器
cd wordpress-customize-nonce
composer install --no-dev
配置
此插件的功能完全由定义的常量管理。
您将可以自定义的两个主要nonce "块"是 UID 和 会话令牌,它们各自都有自己的常量集。定义它们的首选位置是 wp-config.php
文件。
生成策略
WCN_UID_METHOD
和 WCN_TOKEN_METHOD
定义了UID和会话令牌的生成策略
define( 'WCN_UID_METHOD', 'default' ); define( 'WCN_TOKEN_METHOD', 'default' );
请注意,UID和令牌生成策略 并不绑定在一起,它们当然可以使用不同的策略进行生成和验证。
存在不同的可能值,其中一些需要定义额外的常量
default
:默认WP行为;ip
:使用全局变量$_SERVER
中的HTTP_X_REAL_IP
值;none
:在nonce生成和验证中跳过此块;url_param
:使用您选择的GET参数进行生成和验证。- 如果您选择此方法,请确保根据需要定义
WCN_UID_URL_PARAMETER_NAME
或WCN_TOKEN_URL_PARAMETER_NAME
define( 'WCN_UID_URL_PARAMETER_NAME', 'param_name' ); define( 'WCN_TOKEN_URL_PARAMETER_NAME', 'param_name' );
- 如果您选择此方法,请确保根据需要定义
cookie
:使用cookie值进行生成和验证。- 如果您选择此方法,请确保根据需要定义
WCN_UID_COOKIE_NAME
或WCN_TOKEN_COOKIE_NAME
define( 'WCN_UID_COOKIE_NAME', 'cookie_name' ); define( 'WCN_TOKEN_COOKIE_NAME', 'cookie_name' );
- 如果您选择此方法,请确保根据需要定义
fixed
:使用您选择的固定值。- 如果您选择此方法,请确保根据需要定义
WCN_UID
或WCN_TOKEN
define( 'WCN_UID', 'my_value' ); define( 'WCN_TOKEN', 'my_value' );
将这些常量设置为null
将产生与none
方法相同的结果。- 如果您选择此方法,请确保根据需要定义
可选自定义
如果您想深入了解自定义过程,可以定义一系列常量。这些都不是强制性的。
验证旧nonce
默认情况下,WordPress验证nonce的时间最长为24小时(如Codex所述可自定义)。如果一个nonce最多12小时,则 wp_verify_nonce
将返回 1
,如果nonce在12到24小时之间,则返回 2
。如果您希望这样做,可以通过定义以下常量来禁用“类型 2
”nonce的验证
define( 'WCN_VALIDATE_OLD_NONCES', false );
更改nonce架构
默认情况下,WordPress使用wp-config.php
中定义的NONCE_KEY
对用作nonce的字符串进行散列。如果您定义了自己的,或者出于某种原因想使用另一个,可以通过定义以下内容来实现:
define( 'WCN_NONCE_SCHEMA', 'your_schema_name' );
请注意,架构名称应该是这样的(例如:auth
),并且不需要_KEY
或_SCHEMA
后缀,因为WP会自动填充它们。再次强调,必须将盐与其它内容一起在wp-config.php
中定义。
nonce长度
默认情况下,WordPress会裁剪生成的字符串
substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce' ), -12, 10 ); // note substr() offset and length
您可以按照以下方式自定义:
define( 'WCN_NONCE_OFFSET', 0 ); // Default: -12 define( 'WCN_NONCE_LENGTH', 20 ); // Default: 10