snicco/wp-nonce-middleware

v2.0.0-beta.9 2024-09-07 14:27 UTC

README

codecov Psalm Type-Coverage Psalm level PhpMetrics - Static Analysis PHP-Versions

这个中间件用于snicco/http-routing组件,将一次性解决您的WordPress nonce问题。

停止在每个控制器中手动验证nonce。

停止忘记验证nonce。

停止通过nonce操作将控制器代码与视图耦合。

有更好的方法。

安装

composer require snicco/wp-nonce-middleware

使用方法

VerifyWPNonce中间件添加到全局中间件。

此中间件为每个请求执行以下操作

  • 不安全的请求(POSTPATCHDELETE等)将使用wp_verify_nonce检查请求体中的有效WordPress nonce。如果没有找到有效的nonce,将抛出401 HTTPException
  • 对于读取请求和WPNonce实例,如果返回响应是ViewResponse,则将其添加到视图数据中。

在您的视图中,您可以像这样使用WPNonce实例

向表单所在的同一位置提交

<?php
/**
* @var Snicco\Middleware\WPNonce\WPNonce $wp_nonce 
*/
?>

<form method="POST">
    <?= $wp_nonce() ?>
    <button type="submit">Submit</button>
</form>

向路由URL或硬编码的URL提交,该URL与当前位置不同

<?php
/**
* @var Snicco\Middleware\WPNonce\WPNonce $wp_nonce 
* @var Snicco\Component\HttpRouting\Routing\UrlGenerator\UrlGenerator $url 
*/
$route_url = $url->toRoute('route1', ['param1' => 'foo']);

?>

<form method="POST" action="<?= $route_url ?>">
    <?= $wp_nonce($route_url) ?>
    <button type="submit">Submit</button>
</form>

现在永远忘记WordPress nonce。如果请求到达您的控制器,则它具有有效的nonce。

贡献

此存储库是Snicco项目开发仓库的只读分支。

以下是您可以如何贡献.

报告问题和发送拉取请求

请在Snicco单仓中报告问题。

安全性

如果您发现安全漏洞,请遵循我们的披露流程