riccardooliva91/wp-customize-nonce

一款WordPress插件,允许您自定义nonce生成和验证,紧贴核心中定义的原有结构。

安装数: 4,800

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 1

开放问题: 0

类型:wordpress-plugin

1.0.0 2021-04-16 09:02 UTC

This package is auto-updated.

Last update: 2024-09-29 06:21:27 UTC


README

一款WordPress插件,允许您自定义nonce生成和验证,紧贴核心中定义的原有结构。

此插件替换了可插拔函数 wp_create_noncewp_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_METHODWCN_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_NAMEWCN_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_NAMEWCN_TOKEN_COOKIE_NAME
    define( 'WCN_UID_COOKIE_NAME', 'cookie_name' );
    define( 'WCN_TOKEN_COOKIE_NAME', 'cookie_name' );
  • fixed:使用您选择的固定值。
    • 如果您选择此方法,请确保根据需要定义 WCN_UIDWCN_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